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)."'";
Другие вопросы по тегам