Pro-tip:Nooit gebruik SELECT *
in software, tenzij u precies weet waarom u dit doet. In jouw geval is het schadelijk.
Ik neem aan dat je vraag echt gericht is tegen de user
en trade
tabellen die u in uw vraag noemde.
Herschik eerst uw zoekopdracht met behulp van SQL van de 21e eeuw, als volgt:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
Ten tweede, gebruik dit om de namen van uw gebruikers en de verhandelde item-ID op te halen.
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
Bekijk hoe we JOIN
de user
tabel twee keer, met twee verschillende aliassen s
(voor afzender) en r
(voor ontvanger)? Dat is de truc om beide namen uit ID's te halen.
Bekijk hoe we de aliassen sender
gebruiken en receiver
om de twee user_name
. ondubbelzinnig te maken kolommen in de resultatenset?
Als u nu de php fetch_array
. gebruikt functie, krijg je deze elementen in de array.
$history['sender']
$history['receiver']
$history['item_id']
De array-indextekenreeksen komen overeen met de aliasnamen die u hebt opgegeven in uw SELECT
clausule in uw zoekopdracht.
Dus een reden om SELECT *
te vermijden is dat je meer dan één kolom met dezelfde naam kunt krijgen, en dat betekent fetch_array
zal deze duplicaten verwijderen en dus zal nuttige informatie uit uw resultatenset verloren gaan.