2016-11-03 70 views
1

我想使用PDO的fetchAll()方法和\PDO::FETCH_GROUP選項。使用PDO提取按特定列分組的所有行並選擇所有列

但是,\PDO::FETCH_GROUP使用第一列作爲鍵來對結果進行分組。查詢我有選擇的所有領域,如:

SELECT * FROM `my_table`; 

my_table有相當多的領域,這是非常有可能在未來增加新的領域。我不喜歡這個想法逐個指定查詢中的所有字段。

表看起來像這樣:

| my_table | 
+----------+ 
| id  | 
| type  | 
| a_field | 
| b_field | 
| ...  | 

是否有可能由type場使用SELECT * FROM my_table和組嗎?

我試過下面的查詢,但它引發了異常:

$sql = "SELECT type, * FROM my_table"; 
$result = $pdo->query($sql)->fetchAll(\PDO::FETCH_GROUP); 

例外:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM my_table WHERE type IN ('typeA', 'typeB', 'typeC')' at line 1' in MyClass.php on line XXX

+0

*什麼*拋出的異常?好吧,你不用費心閱讀它說的內容,但是你至少可以在這裏發佈它,讓其他人知道發生了什麼問題? –

+0

對不起,我添加了這個異常。當然,我沒有讀過異常,我認爲查詢不是使用'type,*'的有效SQL。 –

回答

2

只是表名perpend星號:

$sql = "SELECT type, my_table.* FROM my_table"; 
$result = $pdo->query($sql)->fetchAll(\PDO::FETCH_GROUP); 
+0

工程就像一個魅力!謝謝! –

相關問題