我想将PDO的fetchAll()
方法与\PDO::FETCH_GROUP
选项一起使用。
但是\PDO::FETCH_GROUP
使用第一列作为键对结果进行分组。我的查询选择了所有字段:
SELECT * FROM `my_table`;
表my_table
有很多字段,很有可能在将来添加新字段。我不喜欢这个想法是逐个指定查询中的所有字段。
表格如下:
| my_table |
+----------+
| id |
| type |
| a_field |
| b_field |
| ... |
是否有可能在SELECT * FROM my_table
字段使用type
和分组?
我尝试了以下查询,但它引发了异常:
$sql = "SELECT type, * FROM my_table";
$result = $pdo->query($sql)->fetchAll(\PDO::FETCH_GROUP);
例外:
致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在MyClass.php中的'* FROM
my_table
WHERE类型IN('typeA','typeB','typeC')'第1行'附近使用正确的语法在第XXX行
答案 0 :(得分:2)
只需在星号中加上表名:
$sql = "SELECT type, my_table.* FROM my_table";
$result = $pdo->query($sql)->fetchAll(\PDO::FETCH_GROUP);