MySQL查询结果不是资源

时间:2010-08-03 07:26:22

标签: php mysql join

我在此代码中遇到查询问题。问题是我之前遇到的问题,$num = mysql_num_rows($result);部分给了我一个MySQL错误,说它预计会有资源。通常当我有这个错误时,这是​​因为我把一个单引号放错了位置,但看了之后我找不到任何问题,尽管这个查询比我通常要处理的要复杂一些。

//connect to the database and stuff

$last_year = idate("Y")-1;
$month = date("m");
$day = date("d");                                   

$query = "SELECT bills.b_id, bills.c_id, bills.grand_total, bills.void, bills.date_added,
                 customers.b_name, customers.l_name, customers.f_name, customers.phone 
          FROM bills, customers 
          WHERE bills.c_id = customers.c_id 
                AND bills.void = '0' 
                AND date_added BETWEEN '".$last_year."-".$month."-".$day."' AND CURDATE()";
$result = mysql_query($query);
mysql_close($link);                 
$num = mysql_num_rows($result);

修改

虽然我已经知道mysql_close()函数不是问题但我继续删除它,我的代码仍然不起作用。这个 EXACT 相同的代码(查询除外)适用于其他十几个页面。 问题在于查询,MySQL错误(如前所述)是mysql_num_rows() expects parameter 1 to be resource。我正在努力解决具体的错误。

5 个答案:

答案 0 :(得分:1)

为您的代码添加一些错误处理。

$result = mysql_query($query);
if ( !$result ) {
  echo 'the query failed: ', mysql_error();
  die;
}

(在“真实”的生产代码中,您可能不希望向任何用户显示实际的查询和错误消息)。

另见:http://docs.php.net/mysql_error

答案 1 :(得分:1)

  1. 检查是否存在mysql错误。如果您尚未启用错误报告,请将其启用以进行开发(error_reporting(E_ALL);)。

  2. 尝试等待关闭mysql连接,直到完成结果集为止。

答案 2 :(得分:0)

最后尝试使用 mysql_close()函数。如果关闭mysql连接, mysql_num_rows()将无法正常工作

$num = mysql_num_rows($result);
.
.
//Any others mysql operations
.
.
mysql_close($link);

答案 3 :(得分:0)

在检索查询结果之前,您关闭了与mysql的链接。那就是问题所在。只是不要使用mysql_close(),因为PHP可以自动处理它。

答案 4 :(得分:0)

“not a resource”错误表示您的查询失败 以这种方式更改你的mysql_query调用

$result = mysql_query($query) or trigger_error(mysql_error().$query);

并查看您的查询有什么问题 总是这样做,以便与可能发生的每一个错误保持联系

相关问题