连接两个具有相同id和相同名称但具有不同值的表

时间:2017-06-25 10:26:51

标签: php mysql foreach

我正在努力做我刚才说的话。我有两个联手表。它们由相同的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>  

我必须用*。

选择所有内容

1 个答案:

答案 0 :(得分:2)

在生产软件中使用 SELECT products.id, products.productname, products.id AS product_id, bookings.*, etc., etc. 通常是considered harmful,特别是在php中,出于您询问的确切原因。

在php中,有时结果集会加载到关联数组中。这将导致来自每组重复列名称之外的所有数据的数据消失。

您想要使用

SELECT *

枚举结果集中所需的列。 (请注意,我猜你的列名。)

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

如果必须使用<?php if(Yii::$app->user->isGuest) { throw new CHttpException(404, 'Oops. Not logged in.'); } ?> ,则需要使用结果集元数据来检查每个列的元数据,并找出需要提取的列。 getColumnMeta()这样做。