mysql_num_row () ошибка - PullRequest
       2

mysql_num_row () ошибка

2 голосов
/ 13 января 2010

Это ошибка, которую я получаю при использовании функции mysql_num_rows ()

Error: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Вот мой исходный код:

$title = "SELECT * FROM item WHERE item.title LIKE % " .implode("% OR item.title LIKE % ", $data);

$title_result = mysql_query($title, $this->dbh);

echo mysql_num_rows($title_result);

То, что я делаю, - это поиск по сайту. В настоящее время я делаю 4 оператора Select, а затем я хотел бы суммировать все найденные в моей базе данных из всех 4 этих операторов SQL. Если я правильно думаю, mysql_num_rows () возвращает количество строк, которые были найдены из оператора Select. Так что теоретически я думал, что мог бы сложить их вместе, чтобы получить общее количество найденных в поиске. Правильно ли я верю в это мышление, если нет, то как я мог бы добавить 4 разных оператора SQL выбора вместе?

Также мой тестовый поиск находится в базе данных.

Заранее спасибо за помощь.

Ответы [ 3 ]

1 голос
/ 13 января 2010

Похоже, ваш запрос не был выполнен. Вам нужно проверить возвращаемое значение mysql_query, прежде чем пытаться mysql_num_rows.

$title_result = mysql_query($title, $this->dbh);

if($title_result)
{
echo mysql_num_rows($title_result);
}
else
{
die(mysql_error());
}

То, что на самом деле происходит в вашем случае, это mysql_query возвращает false, который не является допустимым ресурсом результата MySQL, и когда вы передаете его в mysql_num_rows, он возвращает следующую ошибку:

Error: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
0 голосов
/ 13 января 2010

Большое спасибо, что исправил все мои проблемы. Я не могу сказать вам, как я благодарен, потому что я смотрел на это около двух часов, пытаясь понять это, и я начинал очень расстраиваться. :)

0 голосов
/ 13 января 2010

Ваш оператор MySQL не был выполнен правильно.Это всего лишь догадка, но попробуйте еще раз, заменив $title на следующее:

$title = 'SELECT * FROM item WHERE item.title LIKE "%'.implode('%" OR item.title LIKE "%', $data).'%"';

Затем выполните его следующим образом:

$result = mysql_query ($title, $this->dbh) or die (mysql_error($this->dbh));

Примечание.Вы доверяете $data.Если он исходит из внешних источников (таких как указанный пользователем поиск), вам действительно следует выполнить санитарную обработку с помощью mysql_real_escape_string или подготовленных операторов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...