因此,我试图检查以下查询是否返回任何结果
$numUsersSameRatingQuery="SELECT * `user ratings` WHERE category='$category' AND categoryId='$categoryId' AND `userAromaRating`>0 ";
$result=mysql_query($numUsersSameRatingQuery);
$numResults=mysql_num_rows($result);
if($numResults==0)
{
// do the INSERT INTO
}
else
{
//do the UPDATE SET
}但是,上面的内容返回以下错误,而且每次都执行if($numResults)。换句话说,我永远无法让else块运行。
这是错误
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\boozeDb\profileThis.php on line 141帮助是值得感激的。
发布于 2011-09-27 17:56:19
您可以使用is_resource来确保它是一个资源。您也可以使用if语句来确保没有返回FALSE。
若要显示错误,请使用mysql_error。
示例:
<?php
// From http://ca2.php.net/manual/en/function.mysql-query.php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
trigger_error('Invalid query: ' . mysql_error());
}发布于 2011-09-27 17:56:28
mysql_query()要么返回语句句柄(查询成功),要么返回布尔FALSE (查询失败)。您的代码不检查错误条件并盲目地假定成功。修改代码如下所示:
$result=mysql_query($numUsersSameRatingQuery) or trigger_error(mysql_error());
^^^^^^^^^^^^^^^^^^^^^^--- add this考虑到您的示例查询,您缺少了FROM关键字,可能应该是:
SELECT * FROM `user ratings`
^^^^^^我希望强烈敦促您不要使用包含空格的字段名。他们只不过是麻烦。
发布于 2011-09-27 19:40:48
正如其他人所评论的那样,if语句或"or die()“可能有助于避免再次生成该错误,而错误可能来自查询中缺少的" from”。
我只是觉得有必要对这样一个事实进行评论:您现在正在进行两个查询,以防止表中的一些或所有列被重复: SELECT和INSERT。这可以在一个查询中完成,并将加快您的代码:
插入.(您想插入的内容)..在重复键更新..(如果它已经存在的话应该更新什么)..
想了解更多信息,请看关于它的手册页面。
https://stackoverflow.com/questions/7573519
复制相似问题