加入具有相同的id和列的名称相同,但不同的价值观

问题描述:

我想要做什么,我刚才说的两个表。我有两个连接的表格。他们加入了相同的ID。但有两列同名,我只想输出其中一列。加入具有相同的id和列的名称相同,但不同的价值观

$query= "SELECT * 
     FROM users 
     INNER JOIN bookings ON users.username = bookings.personal 
     JOIN products ON bookings.productid = products.productid 
     WHERE users.id = $id 
     "; 

$selectproductname = $db->prepare($selectuseremailquery); 
$selectproductname ->execute(array()); 
foreach($selectproductname as $index => $rs) : 

it gives me something like this table: 

-id -----id----products----products------ 
-          - 
-1  1  a cup  coffee cup - 
-2  2  a pen  a purple pen - 
-----------------------------------------  

我想输出咖啡杯,但有两列同名。我如何输出?

这不起作用:

<td><div> <?php echo $rs['products.productname']; ?> </div> </td> 

而且我有选择它的所有*。

+3

明确命名,而不是使用''你在想结果所有列。例如。 'bookings.id,bookings.name'等 – wvdz

+1

Noo ...不要构建这样的查询。 SQL注入很容易受到攻击。 –

+0

Thans Wvdz。我解决了。威利姆,你什么意思? –

使用SELECT *一般considered harmful是制作软件,尤其是在PHP中,你问的确切原因。

在PHP中,有时结果集被加载到一个关联数组。这将导致除了每组重复列名之外的所有数据都消失。

你想用

 SELECT products.id, 
      products.productname, 
      products.id AS product_id, 
      bookings.*, 
      etc., etc. 

列举你在结果集中需要的列。 (请注意,我在猜测你的列名)。

我知道你的问题说,你必须使用SELECT *。我怀疑这是真的。如果是这样的话,这可能是由不知道他们在谈论什么的人施加的要求。 (愚蠢的教授技巧浮现在脑海中)

如果必须使用SELECT *,则需要使用结果集元数据来检查每列的元数据,并确定需要提取哪些列。 getColumnMeta()这样做。