2016-09-19 6 views
-4

これは簡単なはずですが、一致するレコードが見つからない場合は、以下のコードで "if($ result === FALSE)"を取得できません。レコードが見つかった場合はうまく動作しますが、レコードが見つからない場合は機能しません。誰かが間違っていることを指摘できますか?

ありがとうございました ケビン。

$SQL = "SELECT * FROM Master WHERE (Title like '%".$SeachFor."%') or (Keywords like '%".$SeachFor."%') ORDER BY Title" ; 
$result = mysqli_query($GLOBALS["connection"], $SQL); 

if ($result === FALSE) { 
    echo 'No results found'; 
} else { 
    $num_rows = mysqli_num_rows($result); 
    $Counter = 1; 
    $DisplayedCounter = 1; 
?> 
<?php require_once('displayproduct.php'); ?> 
<?php 
} 
?> 
+6

をチェックする必要があります* "成功したSELECT、SHOW、DESCRIBEまたはEXPLAIN mysqli_query()はmysqli_resultオブジェクトを返します。その他の成功したクエリでは、mysqli_query()はTRUEを返します。* –

+6

RTM:エラーが発生した場合はfalseを返します。 行数を確認する必要があります。 – Jeff

+5

3回同じコメント – Jeff

答えて

0

あなたのif文に|| mysql_num_rows() == 0を追加することもできますが、このようなものは、より理想的です。

if($result === false) { 
    trigger_error(mysqli_error($GLOBALS['connection'])); 
} else if(mysqli_num_rows($result) === 0){ 
    echo 'No results found'; 
} else { 
    $Counter = 1; 
    $DisplayedCounter = 1; 
} 

これにより、SQLクエリにエラーがあるかどうかを確認できます。 mysqli_query()は、失敗した場合にfalseをブール値として返すだけです。それ以外の場合は、[documentation](http://php.net/manual/en/mysqli.query.php)*に従って、mysqli_num_rows();

+1

ありがとう、これはすべてをカバーするように見えます、私はそれを試してみましょう。 – kse

関連する問題