mysql_num_rows() проблема:: тот же результат двух запросов
$query = "SELECT contents FROM contents WHERE name = '$view'";
$select = mysql_query($query);
if(mysql_num_rows($select) == 0){
//do something//
} else{
//do something//
}
Код работает без проблем, но если я изменю запрос следующим образом
$query = "SELECT contents FROM contents WHERE name = '$view' AND website = '$website_mode'";
Я получил это предупреждение с пустым набором результатов,
Предупреждение: mysql_num_rows() ожидает, что параметр 1 будет ресурсом, логическое значение дано в
Примечание: я использовал printf для печати обоих запросов и пробовал их через phpmyadmin, и оба дали мне один и тот же набор результатов.
3 ответа
Когда ваш $select = mysql_query($query);
имеет ошибочный результат, возвращает логическое значение FALSE
,
Имея в виду $select = FALSE
и вы не можете выполнить mysql_num_rows()
на логическое.
Вы можете распечатать свой $sql
чтобы увидеть, если ваш конечный результат sql в порядке.
И вы можете сделать mysql_error()
чтобы увидеть фактическую ошибку MySQL, например, отсутствующие таблицы, подключение к неверной базе данных и т. д.
Попробуй это
$query = "SELECT contents FROM contents WHERE name = '$view' AND website = '$website_mode'";
$select = mysql_query($query) or die(mysql_error());
и посмотрим, что вы получите. Ваш запрос должен быть неправильным, поэтому вы получаете $select
как FALSE
Попробуй учиться mysqli_*
а также PDO
, mysql_* официально устарели.
$query = "SELECT contents FROM contents WHERE name = '$view' AND website = '$website_mode'";
В этом запросе может быть инъекция SQl
Ваш запрос должен быть
$query = "SELECT `contents` FROM `contents` WHERE `name` = '".mysql_real_escape_string($view)."' AND `website` = '".mysql_real_escape_string($website_mode)."'";