我们已经在一个严重的问题上工作了几个小时。
我们有以下代码:
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中执行它,它可以工作,我们得到一行......
有什么想法吗?
感谢您提供非常好的帮助
答案 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;
如果这不起作用,请将查询减少到订单表,并确保获得结果。如果有效,可以添加一个表等......
此外,如果订单是由用户但不是会员的人发出,我可以看到哪里会出现问题,反之亦然。但是左连接样式查询可以解决该问题。另外,我在查询中编辑了表的顺序以使其更有意义。