2016-09-19 2 views
-4

Это должно быть простым, но я не могу получить «if ($ result === FALSE)» в приведенном ниже коде, чтобы работать, когда совпадающие записи не найдены. Он отлично работает, если записи найдены, но не работают, если записи не найдены. Может кто-то указать, что я делаю неправильно?

Thank you Kevin.

$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

согласно [документации] (http://php.net/manual/en/mysqli.query.php) * «Возвращает FALSE при сбое. Для успешных SELECT, SHOW, DESCRIBE или EXPLAIN запросы mysqli_query() вернут объект mysqli_result. Для других успешных запросов mysqli_query() вернет TRUE. "* –

+6

RTM: mysqli_query возвращает false только в случае ошибки/при сбое. Вам нужно проверить количество строк. – Jeff

+5

3 раза тот же комментарий – Jeff

ответ

0

Вы можете добавить || 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 только как boolean при ошибке. В противном случае вам необходимо проверить mysqli_num_rows();

+1

Спасибо, это похоже, что он охватывает все, я попробую. – kse

Смежные вопросы