Dica profissional:Nunca use
SELECT *
em software, a menos que você saiba exatamente por que está fazendo isso. No seu caso é prejudicial. Estou assumindo que sua consulta é realmente contra o
user
e trade
tabelas que você mencionou em sua pergunta. Primeiro, reformule sua consulta usando o SQL do século XXI, da seguinte maneira:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
Segundo, use isso para recuperar os nomes de usuário e o ID do item negociado.
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
Veja como
JOIN
o user
table duas vezes, com dois aliases diferentes s
(para remetente) e r
(para receptor)? Esse é o truque para buscar os dois nomes dos IDs. Veja como empregamos os aliases
sender
e receiver
para desambiguar os dois user_name
colunas no conjunto de resultados? Agora, quando você usa o php
fetch_array
função, você acabará com esses elementos na matriz. $history['sender']
$history['receiver']
$history['item_id']
As strings de índice de array correspondem aos nomes de alias que você especificou em seu
SELECT
cláusula em sua consulta. Portanto, uma razão para evitar
SELECT *
é que você pode obter mais de uma coluna com o mesmo nome, e isso significa fetch_array
eliminará essas duplicatas e, portanto, perderá informações úteis do seu conjunto de resultados.