プロのヒント:決して 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 これらの重複を排除するため、結果セットから有用な情報が失われます。