mysql_num_row()错误

时间:2010-01-13 02:01:38

标签: php mysql

这是我在使用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 select语句,我是否正确?

我的测试搜索也在数据库中。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

看起来您的查询无法执行。在尝试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时,它会返回以下错误:< / p>

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

答案 1 :(得分:0)

您的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或准备好的语句进行清理

答案 2 :(得分:0)

非常感谢我解决了所有问题。我不能告诉你我多么感激,因为我看了大约2个小时试图解决这个问题,我开始变得非常沮丧。 :)