Consejo profesional:Nunca usa SELECT * en el software a menos que sepa exactamente por qué lo está haciendo. En tu caso es perjudicial.
Supongo que su consulta es realmente contra el user y trade tablas que mencionó en su pregunta.
Primero, reformule su consulta utilizando SQL del siglo XXI, de la siguiente manera:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
En segundo lugar, use esto para recuperar los nombres de sus usuarios y la identificación del artículo intercambiado.
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
Vea cómo JOIN el user tabla dos veces, con dos alias diferentes s (para el remitente) y r (para el receptor)? Ese es el truco para obtener ambos nombres de las identificaciones.
Vea cómo empleamos los alias sender y receiver para eliminar la ambigüedad de los dos user_name columnas en el conjunto de resultados?
Ahora, cuando usas php fetch_array función, terminará con estos elementos en la matriz.
$history['sender']
$history['receiver']
$history['item_id']
Las cadenas de índice de matriz corresponden a los nombres de alias que especificó en su SELECT cláusula en su consulta.
Entonces, una razón para evitar SELECT * es que puede obtener más de una columna con el mismo nombre, y eso significa fetch_array eliminará esos duplicados y perderá información útil de su conjunto de resultados.