Professionelt tip:Aldrig brug SELECT *
i software, medmindre du ved præcis, hvorfor du gør det. I dit tilfælde er det skadeligt.
Jeg går ud fra, at din forespørgsel virkelig er imod user
og trade
tabeller, du nævnte i dit spørgsmål.
Først skal du omforme din forespørgsel ved hjælp af SQL fra det 21. århundrede, som følger:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
For det andet skal du bruge dette til at hente dine brugernavne og det handlede vare-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
Se, hvordan vi JOIN
user
tabel to gange med to forskellige aliaser s
(for afsender) og r
(til modtager)? Det er tricket til at hente begge navne fra ID'er.
Se, hvordan vi bruger aliasserne sender
og receiver
for at disambiguere de to user_name
kolonner i resultatsættet?
Nu, når du bruger php fetch_array
funktion, ender du med disse elementer i arrayet.
$history['sender']
$history['receiver']
$history['item_id']
Array-indeksstrengene svarer til de aliasnavne, du har angivet i din SELECT
klausul i din forespørgsel.
Så en grund til at undgå SELECT *
er, at du kan få mere end én kolonne med samme navn, og det betyder fetch_array
vil fjerne disse dubletter, og så vil den miste nyttig information fra dit resultatsæt.