2017-06-25 147 views
0

我想要做什麼,我剛纔說的兩個表。我有兩個連接的表格。他們加入了相同的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。我解決了。威利姆,你什麼意思? –

回答

2

使用SELECT *一般considered harmful是製作軟件,尤其是在PHP中,你問的確切原因。

在PHP中,有時結果集被加載到一個關聯數組。這將導致除了每組重複列名之外的所有數據都消失。

你想用

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

列舉你在結果集中需要的列。 (請注意,我在猜測你的列名)。

我知道你的問題說,你必須使用SELECT *。我懷疑這是真的。如果是這樣的話,這可能是由不知道他們在談論什麼的人施加的要求。 (愚蠢的教授技巧浮現在腦海中)

如果必須使用SELECT *,則需要使用結果集元數據來檢查每列的元數據,並確定需要提取哪些列。 getColumnMeta()這樣做。