Результат запроса не будет отражен

У меня есть функция. в этой функции есть запрос выбора. другой запрос должен вернуть количество результатов, которые будут в первом запросе. У меня есть этот код:

    function name ($f){  
     global $db;
     ...
     $results = "SELECT `a` FROM `b` WHERE $where"; 
     $results_num = ($query = mysqli_query($db, $results)) ? mysqli_num_rows($results) : 0; 

     echo $results;
     echo $results_num;
    }

будет эхом

SELECT `a` FROM `b` WHERE `keywords` LIKE '%abc%'0 

что просто $results но нет $results_num? я не понимаю почему echo $results_num не будет показано и почему существует 0 в конце $results так что если есть кто-то, кто мог бы дать мне совет решить эту проблему, я был бы очень признателен большое спасибо.

3 ответа

Решение

Во-первых, $results_num ноль и выводится (вот почему есть 0 в конце вашего вывода). Это потому, что этот код неверен:

$results_num = ($query = mysqli_query($db, $results)) ? mysqli_num_rows($results) : 0; 

Немного сломав это:

$query = mysqli_query($db, $results);
$results_num = $query ? mysqli_num_rows($results) : 0;

И вторая строка должна быть:

$results_num = $query ? mysqli_num_rows($query) : 0;

Вам нужно передать дескриптор запроса mysqli_num_rows(), а не SQL.

$results_num равно 0. $results is - ВЫБРАТЬ a ОТ b ГДЕ keywords LIKE '%abc%' попробуйте это

echo "Results is $results <br />";
echo "Results_num is $results_num <br />";

и все раскроется само собой:)

$results ваша строка запроса Вы не можете передать строку mysqli_num_rows() как вы делаете это, он ожидает идентификатор набора результатов, возвращаемый mysqli_query(), В вашем случае это $query (вы могли бы хотеть изменить свои имена переменных, чтобы иметь больше смысла, кстати).

Другие вопросы по тегам