专家提示:Never use SELECT *
除非您确切知道这样做的原因,否则在软件中。在你的情况下这是有害的。
我假设你的查询确实反对user
and trade
您在问题中提到的表格。
首先,使用 21 世纪 SQL 重新编写查询,如下所示:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
其次,用它来检索您的用户名和交易的项目 ID。
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
the user
表两次,有两个不同的别名s
(对于发件人)和r
(对于接收者)?这就是从 ID 中获取两个名字的技巧。
看看我们如何使用别名sender
and receiver
来消除两者的歧义user_name
结果集中的列?
现在,当你使用 phpfetch_array
函数,您最终将在数组中得到这些元素。
$history['sender']
$history['receiver']
$history['item_id']
数组索引字符串对应于您在SELECT
您的查询中的子句。
所以,避免的原因之一SELECT *
是你可以获得多个具有相同名称的列,这意味着fetch_array
将消除这些重复项,因此它将丢失结果集中的有用信息。