1

Web から pdf リンクをクロールしました。データベースに存在するドキュメントの名前でドキュメントの名前 (リンクから取得したもの) をチェックアウトして、データベースにまだ存在しない pdf をコピーしたいと思います。コードは次のとおりです。

$input = explode(" ",trim(basename($pdfLink, ".pdf"),"() "));
$sql   = mysql_query("SELECT doc_name FROM tb WHERE doc_name ='$input'")or die(mysql_error());
if (!$sql){
    copy($pdfLink, $savePath . basename($pdfLink));
}

$pdfLinkPDFリンクの文字列です。しかし、コピープロセスは機能しませんでした。どうしたの?ありがとうございました :)

4

2 に答える 2

2

DB 内の関連レコードの数を確認することをお勧めします。

$input = explode(" ",trim(basename($pdfLink, ".pdf"),"() "));
$sql   = mysql_query("SELECT COUNT(*) AS cnt FROM tb WHERE doc_name ='$input'")
         or die(mysql_error());
$row   = mysql_fetch_assoc($sql);
if ($row['cnt'] < 1){
  copy($pdfLink, $savePath . basename($pdfLink));
}
mysql_free_result($sql);

または影響を受ける行をカウントするには:

$input = explode(" ",trim(basename($pdfLink, ".pdf"),"() "));
$sql   = mysql_query("SELECT doc_name FROM tb WHERE doc_name ='$input' LIMIT 1")
         or die(mysql_error());
$rows   = mysql_affected_rows($sql);
if ($rows < 1){
  copy($pdfLink, $savePath . basename($pdfLink));
}
mysql_free_result($sql);
于 2012-10-12T08:20:37.697 に答える
1

SELECTステートメントが空のセットを返す (つまり、何も見つからない) 場合でも、有効なハンドルが返され、PHP はこれを true と解釈します。したがって、データベース エラーが発生しない場合、変数の$sql結果は常に true になります。

于 2012-10-12T08:10:50.940 に答える