Suggerimento per professionisti:Mai usa SELECT *
nel software a meno che tu non sappia esattamente perché lo stai facendo. Nel tuo caso è dannoso.
Presumo che la tua domanda sia davvero contro l'user
e trade
tabelle che hai menzionato nella tua domanda.
Innanzitutto, riformula la query utilizzando l'SQL del 21° secolo, come segue:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
In secondo luogo, utilizzalo per recuperare i nomi dei tuoi utenti e l'ID oggetto scambiato.
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
Guarda come JOIN
il user
tabella due volte, con due diversi alias s
(per mittente) e r
(per ricevitore)? Questo è il trucco per recuperare entrambi i nomi dagli ID.
Guarda come utilizziamo gli alias sender
e receiver
per disambiguare i due user_name
colonne nel set di risultati?
Ora, quando usi il php fetch_array
funzione, ti ritroverai con questi elementi nell'array.
$history['sender']
$history['receiver']
$history['item_id']
Le stringhe di indice dell'array corrispondono ai nomi alias che hai specificato nel tuo SELECT
clausola nella tua query.
Quindi, un motivo per evitare SELECT *
è che puoi ottenere più di una colonna con lo stesso nome, e questo significa fetch_array
eliminerà quei duplicati e quindi perderà informazioni utili dal tuo set di risultati.