0

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

我们有以下代码:

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));

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

有任何想法吗 ?

感谢您的帮助,我们将非常感谢

4

2 回答 2

3

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

于 2010-08-27T16:57:49.920 回答
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;

如果这不起作用,请将查询减少到仅 order 表并确保获得结果。如果可行,请添加表格等...

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

于 2010-08-27T17:32:11.097 回答