Chr*_*cho 2 php mysql sql arrays pdo
给定一个非常简单的表结构:
mysql> describe songpart;
+----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+----------------+
| id | int(11) | NO | MUL | NULL | auto_increment |
| partName | text | NO | | NULL | |
+----------+---------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
这会在php中生成这样的数组(查询时)
Array ( [0] => Array ( [id] => 1 [0] => 1 [partName] => Lead Guitar [1] => Lead Guitar )
[1] => Array ( [id] => 2 [0] => 2 [partName] => Bass Guitar [1] => Bass Guitar )
[2] => Array ( [id] => 3 [0] => 3 [partName] => Drums [1] => Drums )
[3] => Array ( [id] => 4 [0] => 4 [partName] => Keyboard [1] => Keyboard ) )
Run Code Online (Sandbox Code Playgroud)
我错过了一些简单的技巧,将其转换为一个简单的数组,其中id为关键,如下所示:
Array ( [1] => Lead Guitar
[2] => Bass Guitar
[3] => Drums
[4] => Keyboard )
Run Code Online (Sandbox Code Playgroud)
或者是否有可能让PDO提供这样的阵列?
TIA
您可以简单地使用PDO::FETCH_KEY_PAIR结果中只有2列.
如果你有更多,你也可以使用PDO::FETCH_GROUP和PDO::FETCH_ASSOC.示例:
$result = $db->query('select * from channels')->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
这将产生一个索引的数组,其中第一列包含每个索引的该键的结果数组.您可以通过使用array_map('reset', $result)来实现目标来解决此问题.
示例:
$result = array_map('reset', $db->query('select * from channels')->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC));
Run Code Online (Sandbox Code Playgroud)