mysql_num_rows返回0,但phpMyAdmin中的相同查询返回结果

时间:2010-08-27 16:53:51

标签: php mysql phpmyadmin mysql-num-rows

我们已经在一个严重的问题上工作了几个小时。

我们有以下代码:

mysql_connect("localhost","xxx","xxx") or die(mysql_error());
mysql_select_db("xxxe");

$q = "SELECT m.id, m.expired_date, u.email
     FROM jos_osemsc_member m, jos_osemsc_orders o, jos_users u
    WHERE o.order_id  = $orderID
   AND m.member_id = o.user_id
   AND u.id  = o.user_id";

$res = mysql_query($q);

if (!$res) {
  mail('xxx@xxx.com','test',mysql_error());
}

mail("xxx@xxx.com", "count",  mysql_num_rows($res));

我们收到“count”邮件,但是mysql_num_rows的结果为“0”。如果我们通过电子邮件发送查询($ q),并在phpMyAdmin中执行它,它可以工作,我们得到一行......

有什么想法吗?

感谢您提供非常好的帮助

2 个答案:

答案 0 :(得分:3)

用户xxx可能比您用于PMA的用户拥有更多限制权限。

答案 1 :(得分:0)

尝试重新写入您的查询。我发现LEFT JOIN更易于理解和处理。

SELECT m.id, m.expired_date, u.email
FROM jos_osemsc_orders AS o 
        LEFT JOIN jos_osemsc_member AS m ON (m.member_id = o.user_id) 
        LEFT JOIN jos_users AS u ON (u.id = o.user_id)
WHERE o.order_id  = $orderID;

如果这不起作用,请将查询减少到订单表,并确保获得结果。如果有效,可以添加一个表等......

此外,如果订单是由用户但不是会员的人发出,我可以看到哪里会出现问题,反之亦然。但是左连接样式查询可以解决该问题。另外,我在查询中编辑了表的顺序以使其更有意义。