2016-11-03 2 views
1

Ich möchte PDO fetchAll() Methode mit \PDO::FETCH_GROUP Option verwenden.Abrufen aller Zeilen gruppiert nach einer bestimmten Spalte mit PDO und Auswahl aller Spalten

Allerdings verwendet \PDO::FETCH_GROUP die erste Spalte als Schlüssel zum Gruppieren der Ergebnisse. Die Abfrage Ich habe wählt alle Felder mögen:

SELECT * FROM `my_table`; 

Die Tabelle my_table hat einige Felder und es ist durchaus möglich, dass neue Felder in der Zukunft hinzugefügt werden. Ich mag es nicht, alle Felder in der Abfrage einzeln anzugeben.

Die Tabelle sieht wie folgt aus:

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

Gibt es irgendeine Möglichkeit SELECT * FROM my_table und Gruppe durch die type Feld zu benutzen?

Ich habe die folgende Abfrage versucht, aber es hat eine Ausnahme:

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

Ausnahme:

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

* Was * Ausnahme hat es geworfen? Ok, du brauchst nicht zu lesen, was es sagt, aber kannst du es wenigstens hier posten, damit andere Leute eine Idee haben, was schief läuft? –

+0

Entschuldigung, ich habe die Ausnahme hinzugefügt. Sicher habe ich die Ausnahme gelesen, und ich denke, dass die Abfrage kein gültiges SQL ist, das 'type, *' verwendet. –

Antwort

2

perpend einfach das Sternchen mit dem Tabellennamen:

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

Funktioniert wie ein Charme! Vielen Dank! –

Verwandte Themen