Результат запроса не будет отражен
У меня есть функция. в этой функции есть запрос выбора. другой запрос должен вернуть количество результатов, которые будут в первом запросе. У меня есть этот код:
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
(вы могли бы хотеть изменить свои имена переменных, чтобы иметь больше смысла, кстати).