2013-10-08 26 views
0

我會盡力解釋我的意思,對不起,如果之前已經詢問過,我只是不知道我在找什麼,找到答案?完全相同的記錄字段,僅回顯一個(PHP)

作爲一個例子可以說我有一個表叫TEST並在此表中我有不同的數據相同的名字,這裏有一個例子:

NAME | EXAMPLE | ID 
---------------------------- 
ONE | HELLO  | 22 
ONE | GOODBYE | 23 
TWO | GREETINGS | 45 
TWO | FAREWELL | 12 
THREE | HEY  | 11 
THREE | BYE  | 81 

正如你可以看到,在該行中NAME - ONE, TWO & THREE是相同的,但在EXAMPLEID中有不同的數據。讓我們一天我要顯示/呼應列NAME

<?php 
$stmt = $db->query('SELECT * FROM data-example ORDER BY id'); 
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) : ?> 

<?= htmlspecialchars($row['name']) ?> 

<?php endwhile ?> 

它的輸出將是:

ONE 
ONE 
TWO 
TWO 
THREE 
THREE 

我想做的只是輸出在此列各NAME之一?例如,輸出應該是這樣的:

ONE 
TWO 
THREE 

什麼是php loop呼應列最佳做法,不輸出相同的名字,在一定意義上認識到,有具有相同的名稱,但只使用兩個字段一場?

注意:我很抱歉,如果這個問題以前,如果是這樣,請指示我的職位。

+1

你可以用'GROUP BY name' –

+1

既然你似乎只關心一個字段也可以使用'SELECT DISTINCT name FROM data-example ORDER BY id'。在這兩種情況下,您都需要在名稱上使用索引(對於DISTINCT或GROUP BY) –

回答

1

有沒有必要這樣做在PHP中,因爲MySQL可以爲你做的工作。只需在ORDER條款之前添加GROUP BY name即可。

+0

謝謝!這種簡單的解決方案在我看來非常複雜。在任何地方找不到解決方案! – SethCodes

+0

我很高興我能幫助你。如果他們解決了您的問題,請記住接受答案。 – TheWolf

+0

5分鐘後,我將被允許點擊打勾。 – SethCodes

1

好吧,如果你不需要表的其餘部分,你可以改變

$stmt = $db->query('SELECT * FROM data-example ORDER BY id'); 

$stmt = $db->query('SELECT distinct name FROM data-example'); 
相關問題