Tip pro profesionály:Nikdy použijte SELECT *
v softwaru, pokud přesně nevíte, proč to děláte. Ve vašem případě je to škodlivé.
Předpokládám, že váš dotaz je skutečně proti user
a trade
tabulky, které jste zmínil ve své otázce.
Nejprve přeformulujte svůj dotaz pomocí SQL 21. století následovně:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
Za druhé, použijte toto k načtení vašich uživatelských jmen a ID obchodované položky.
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
Podívejte se, jak se JOIN
user
tabulka dvakrát, se dvěma různými aliasy s
(pro odesílatele) a r
(pro přijímač)? To je trik, jak z ID získat obě jména.
Podívejte se, jak používáme aliasy sender
a receiver
k odlišení dvou user_name
sloupců v sadě výsledků?
Nyní, když použijete php fetch_array
skončíte s těmito prvky v poli.
$history['sender']
$history['receiver']
$history['item_id']
Řetězce indexu pole odpovídají názvům aliasů, které jste zadali v SELECT
klauzule ve vašem dotazu.
Takže jeden důvod, proč se vyhnout SELECT *
je, že můžete získat více než jeden sloupec se stejným názvem, a to znamená fetch_array
odstraní tyto duplikáty, a tak ztratí užitečné informace z vaší sady výsledků.