Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql\u num\u row()错误_Php_Mysql - Fatal编程技术网

Php mysql\u num\u row()错误

Php mysql\u num\u row()错误,php,mysql,Php,Mysql,这是我在使用mysql_num_rows()函数时遇到的错误 以下是我的源代码: $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); 我正在做的是创建一个网站搜索。目前,我

这是我在使用mysql_num_rows()函数时遇到的错误

以下是我的源代码:

$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语句加在一起呢

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


提前感谢您的帮助。

您的查询似乎无法执行。在尝试
mysql\u num\u rows
之前,需要检查
mysql\u query
的返回值

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

if($title_result)
{
echo mysql_num_rows($title_result);
}
else
{
die(mysql_error());
}
在您的案例中实际发生的情况是,
mysql\u query
返回的是
false
,这不是有效的mysql结果资源,当您将其传递到
mysql\u num\u rows
时,它返回以下错误:

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

您的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\u real\u escape\u string
或准备好的语句进行清理非常感谢您修复了我的所有问题。我无法告诉你我有多感激,因为我花了大约两个小时来研究这个问题,试图找出答案,但我开始感到非常沮丧

好吧,这显然是我的错误。所以我假设我没有正确使用LIKE函数。我在谷歌上到处找,找不到好的解释。类似的东西如何与mysql配合使用?您建议的标题很有效。非常感谢。另外一个快速问题是,您是否可以添加多个mysql_num_rows()?我的直觉是肯定的,因为它返回一个int,但我只想确认我的直觉。如果我的直觉是错误的,我如何才能添加多个Select语句?@Snader-yes,您可以这样添加行。不过,通过一个精心编制的SQL语句,您可能可以更快地完成这项工作。另外,如果您只对行数感兴趣,那么使用
COUNT(*)
查询会更好。
$result = mysql_query ($title, $this->dbh) or die (mysql_error($this->dbh));