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

「count」メールを受け取りますが、mysql_num_rows の結果は「0」です。クエリ ($q) を電子メールで送信し、phpMyAdmin で実行すると、1 行の結果が得られます...

何か案は ?

非常に感謝される助けをありがとう

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;

それでもうまくいかない場合は、クエリを orders テーブルだけに減らして、結果が得られることを確認してください。それが機能する場合は、テーブルなどを追加します...

また、ユーザーであって会員ではない人が注文した場合、またはその逆の場合、どこに問題があるかがわかります。ただし、左結合スタイルのクエリはその問題を解決します。また、クエリ内のテーブルの順序を編集して、より意味のあるものにしました。

于 2010-08-27T17:32:11.097 に答える