在同一个表中回显具有相同列名的多个值

2024-01-12

我有 2 个表,一个用户表和一个交易表。

看起来像:

我现在的代码结构是:

<?php 
$history = mysqli_query($con, "SELECT * FROM .......");

while($row = mysqli_fetch_array($history)) { 
echo("The sentence");
} ?>

我面临的问题是我试图回显用户名,在一种情况下必须是接收者,而在另一种情况下必须是提供者。


专家提示: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将消除这些重复项,因此它将丢失结果集中的有用信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同一个表中回显具有相同列名的多个值 的相关文章