为什么我的 PHP 中同一列出现两次?PostgreSQL 查询?

我有一个 Postgres 数据库,我使用 PHP 脚本从中检索数据。在这个脚本中我通过 PDO 连接:

$connection = new PDO('pgsql:host=' . $host . ';dbname=' . $database, $username, $password);

然后,我有一个查询,它应该只列出id每个实例的:

$query = 'SELECT id FROM my_table WHERE "myCondition" = TRUE';

然后我得到查询结果:

$result = $connection->prepare($query) or die($connection->error);
$result-> execute();

最后,我打印我的结果:

foreach($result AS $row) {
    echo var_dump($row);
};

现在我的问题是,我在浏览器中得到了每个值的两个值的数组$row,即使我只要求返回id

数组(2) { ["id"]=> 字符串(3) "GNQ" [0]=> 字符串(3) "GNQ" }

因此,不知何故,我得到了第二个值,再次使用id但具有不同的键标识符(在这种情况下是索引)。我在这里做错了什么?


慕婉清6462132
浏览 107回答 1
1回答

慕仙森

由于 PDO 获取类型,它返回相同的值两次。默认值是PDO::FETCH_BOTH“返回从 0 开始索引并带有名称的列”。如果您只想返回命名索引,只需将第四个参数添加到带有选项数组的 PDO 构造函数(https://www.php.net/manual/en/pdo.construct.php)。$connection = new PDO(    'pgsql:host=' . $host . ';dbname=' . $database,     $username,     $password,     [\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ]);
打开App,查看更多内容
随时随地看视频慕课网APP