Професионален съвет:Никога използвайте SELECT *
в софтуера, освен ако не знаете точно защо го правите. Във вашия случай е вредно.
Предполагам, че вашата заявка наистина е срещу user
и trade
таблици, които споменахте във вашия въпрос.
Първо, преработете заявката си, като използвате SQL от 21-ви век, както следва:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
Второ, използвайте това, за да извлечете имената на вашите потребители и идентификатора на търгувания артикул.
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
Вижте как JOIN
user
таблица два пъти, с два различни псевдонима s
(за подател) и r
(за приемник)? Това е трикът за извличане на двете имена от идентификатори.
Вижте как използваме псевдонимите sender
и receiver
за да разграничите двете user_name
колони в резултатния набор?
Сега, когато използвате php fetch_array
функция, ще се окажете с тези елементи в масива.
$history['sender']
$history['receiver']
$history['item_id']
Индексните низове на масива съответстват на имената на псевдонимите, които сте посочили във вашия SELECT
клауза във вашата заявка.
Така че, една от причините да избягвате SELECT *
е, че можете да получите повече от една колона със същото име и това означава fetch_array
ще премахне тези дубликати и така ще загуби полезна информация от вашия набор от резултати.