【问题标题】:Why am I getting the same column twice in my PHP | PostgreSQL query? [duplicate]为什么我在我的 PHP 中两次获得相同的列? PostgreSQL 查询? [复制]
【发布时间】:2020-08-18 13:51:30
【问题描述】:

我有一个 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

array(2) { ["id"]=> string(3) "GNQ" [0]=> string(3) "GNQ" }

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

【问题讨论】:

    标签: php postgresql


    【解决方案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]
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多