Conseil de pro :Jamais utilisez SELECT *
dans le logiciel à moins que vous ne sachiez exactement pourquoi vous le faites. Dans votre cas, c'est nocif.
Je suppose que votre requête est vraiment contre le user
et trade
tables que vous avez mentionnées dans votre question.
Tout d'abord, reformulez votre requête en utilisant le SQL du 21e siècle, comme suit :
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
Ensuite, utilisez-le pour récupérer les noms de vos utilisateurs et l'identifiant de l'objet échangé.
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
Découvrez comment nous JOIN
l'user
table deux fois, avec deux alias différents s
(pour l'expéditeur) et r
(pour le récepteur) ? C'est l'astuce pour récupérer les deux noms à partir des identifiants.
Découvrez comment nous utilisons les alias sender
et receiver
pour lever l'ambiguïté des deux user_name
colonnes dans le jeu de résultats ?
Maintenant, lorsque vous utilisez le php fetch_array
fonction, vous vous retrouverez avec ces éléments dans le tableau.
$history['sender']
$history['receiver']
$history['item_id']
Les chaînes d'index du tableau correspondent aux noms d'alias que vous avez spécifiés dans votre SELECT
clause dans votre requête.
Donc, une raison d'éviter SELECT *
est que vous pouvez obtenir plus d'une colonne avec le même nom, et cela signifie fetch_array
éliminera ces doublons et ainsi il perdra des informations utiles de votre ensemble de résultats.