当前位置: 首页 > 知识库问答 >
问题:

为什么我在PHP PostgreSQL查询中两次得到相同的列?[副本]

涂溪叠
2023-03-14

我有一个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,但有一个不同的键标识符(在这种情况下是索引)。我在这里做错了什么?

共有1个答案

潘秦斩
2023-03-14

由于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]
);
 类似资料:
  • 我正在尝试使用spring查询mongodb。我们有一个集合,其中包含一棵树,并包含一个项目列表作为树路径(因此我们可以轻松遍历树)。我们有一个需要返回特定节点的所有子节点的查询。我们的查询基于选择路径中有节点(父节点)且比父节点(级别)低一级的所有节点。我们的标准如下: 唉,当我们在mongodb上调用它时,我们会得到以下异常: 组织。springframework。数据mongodb。Inva

  • 我试图在Java做简单的聊天应用程序,但我得到这个错误。怎么了?我该怎么修好它?for循环中有一些错误? 我得到这个错误 线程“main”java.lang.IndexOutoFboundsException:索引0超出长度0的界限,位于java.base/jdk.internal.util.preconditions.OutoFbounds(preconditions.java:64)位于jav

  • 问题内容: 为什么我不能对相同的数据进行两次迭代? 这将打印“执行一次”几次(由于数据有几行),但是根本不会打印“执行两次”。 我第一次遍历数据工作正常,但是第二次当我运行最后一个列表“针对数据行”时,此操作什么都不返回……因此一次执行它却不能两次……? 仅供参考-数据是一个csv.reader对象(如果是原因)… 问题答案: 这是因为它data是一个迭代器,你只能使用一次迭代器。例如: 如果我们

  • 我有一个arraylist,其中添加了以下数字。 然后我使用下面的代码遍历列表并在打印前求和。 它正在打印出一个值6。有人知道发生了什么吗?或者有人能解释我在这里做错了什么吗?感谢您的时间,如果有什么我可以补充澄清的,请不要犹豫。

  • 我有一个应用程序,我正在做一些数据库操作。根据这些价值,我也在做一些计算。但是我得到了列表中每个值的多次迭代 我得到多个时间每个值为什么是这样。列表大小为5 这是我的代码,我在排队时得到了那个例外 但我不明白我错在哪里。谁来帮忙

  • 我正在运行这样一个简单的SQL连接和select,但在运行查询时,我遇到了非常奇怪的错误。 警告:mysqli_fetch_array()希望参数1是mysqli_结果,布尔值在第23行的C:\xampp\htdocs\Webmaster\run\forum_mc.php中给出 警告:mysqli_query():第24行()上C:\xampp\htdocs\Webmaster\run\forum