Profi-Tipp:Niemals Verwenden Sie SELECT *
in Software, es sei denn, Sie wissen genau, warum Sie dies tun. In Ihrem Fall ist es schädlich.
Ich gehe davon aus, dass Ihre Abfrage wirklich gegen den user
gerichtet ist und trade
Tabellen, die Sie in Ihrer Frage erwähnt haben.
Formulieren Sie zunächst Ihre Abfrage mit SQL des 21. Jahrhunderts wie folgt um:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
Verwenden Sie dies zweitens, um die Namen Ihrer Benutzer und die gehandelte Artikel-ID abzurufen.
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
Sehen Sie, wie wir JOIN
werden der user
Tabelle zweimal, mit zwei verschiedenen Aliasnamen s
(für Absender) und r
(für Empfänger)? Das ist der Trick, um beide Namen aus IDs abzurufen.
Sehen Sie, wie wir die Aliase sender
verwenden und receiver
um die beiden user_name
eindeutig zu machen Spalten in der Ergebnismenge?
Wenn Sie nun das fetch_array
von php verwenden Funktion erhalten Sie diese Elemente im Array.
$history['sender']
$history['receiver']
$history['item_id']
Die Array-Indexzeichenfolgen entsprechen den Aliasnamen, die Sie in Ihrem SELECT
angegeben haben Klausel in Ihrer Abfrage.
Ein Grund also, SELECT *
zu vermeiden ist, dass Sie mehr als eine Spalte mit demselben Namen erhalten können, und das bedeutet fetch_array
wird diese Duplikate eliminieren und somit nützliche Informationen aus Ihrer Ergebnismenge verlieren.