我试着用 PDO::FETCH_KEY_PAIR
pdo中的参数 fetchAll()
能够输出一个数组,其中每个键是主键,值是select语句返回的每行的另一个字段。
例如:
$stmt = $this->db->prepare('SELECT country_id, name FROM _country');
$stmt->execute();
$data = $stmt->fetchAll(\PDO::FETCH_KEY_PAIR);
其中country\u id是int(10),name是varchar。这个 $data
然后在另一个脚本中处理:
foreach( $data as $key => $value ){
echo $key . "|" . $value;
}
选择语句结果:
------------------------
|country_id | name |
------------------------
| 18 | India |
| 26 | Germany |
| 129 | Sweden |
------------------------
但是,当返回数组时,键的索引为零,只使用name列作为值。
预期输出(使用 echo print_r($data)
)
Array ( [18] => India [26] => Germany [129] => Sweden)
实际产量
Array ( [0] => India [1] => Germany [2] => Sweden)
奇怪的是,当我切换列时:
SELECT name, country_id FROM _country;
它完美地将每个国家的名称作为一个键返回,主键整数作为值。
Array ( [India] => 18 [Germany] => 26 [Sweden] => 129)
我想我应该试着和你一起玩 PDO::ATTR_STRINGIFY_FETCHES
以及 PDO::ATTR_EMULATE_PREPARES
属性,但无济于事。
我正在运行:-php5.5.9-mysql server 5.6.16-pdo\u mysql mysqlnd 5.0.11-dev
1条答案
按热度按时间vcudknz31#
尝试以下方式获取结果: