プロのヒント:決して SELECT *
を使用します あなたがそうしている理由を正確に知らない限り、ソフトウェアで。あなたの場合、それは有害です。
あなたのクエリは本当にuser
に対してであると思います およびtrade
質問で言及した表。
まず、21世紀のSQLを使用して、次のようにクエリを再キャストします。
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
次に、これを使用して、ユーザーの名前と取引されたアイテムIDを取得します。
SELECT s.user_name AS sender,
r.user_name AS receiver,
t.trade_id AS item_id
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
JOIN user AS r ON r.user_id = t.user_id_receiver
WHERE s.facebook_id = $fbid
JOIN
の方法をご覧ください user
テーブルを2回、2つの異なるエイリアスs
(送信者用)およびr
(受信機用)?これが、IDから両方の名前を取得するための秘訣です。
エイリアスsender
の採用方法をご覧ください およびreceiver
2つのuser_name
の曖昧さを解消します 結果セットの列?
これで、php fetch_array
を使用すると 関数を使用すると、これらの要素が配列に含まれることになります。
$history['sender']
$history['receiver']
$history['item_id']
配列のインデックス文字列は、SELECT
で指定したエイリアス名に対応しています。 クエリの句。
したがって、SELECT *
を避ける理由の1つ 同じ名前の複数の列を取得できるということです。つまり、fetch_array
これらの重複を排除するため、結果セットから有用な情報が失われます。