Wskazówka dla profesjonalistów:Nigdy użyj SELECT *
w oprogramowaniu, chyba że wiesz dokładnie, dlaczego to robisz. W twoim przypadku jest to szkodliwe.
Zakładam, że Twoje zapytanie jest naprawdę skierowane przeciwko user
i trade
tabele, o których wspomniałeś w swoim pytaniu.
Najpierw przekształć zapytanie, używając SQL XXI wieku, w następujący sposób:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
Po drugie, użyj tego, aby pobrać nazwy użytkownika i identyfikator przedmiotu, którym handlowałeś.
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
Zobacz, jak JOIN
user
tabela dwukrotnie, z dwoma różnymi aliasami s
(dla nadawcy) i r
(dla odbiorcy)? To sztuczka, aby pobrać obie nazwy z identyfikatorów.
Zobacz, jak używamy aliasów sender
i receiver
aby odróżnić dwa user_name
kolumny w zestawie wyników?
Teraz, gdy używasz php fetch_array
funkcji, otrzymasz te elementy w tablicy.
$history['sender']
$history['receiver']
$history['item_id']
Ciągi indeksu tablicy odpowiadają aliasom określonym w SELECT
klauzuli w zapytaniu.
Dlatego jednym z powodów, aby unikać SELECT *
jest to, że możesz uzyskać więcej niż jedną kolumnę o tej samej nazwie, co oznacza fetch_array
wyeliminuje te duplikaty, a tym samym utraci przydatne informacje z zestawu wyników.