php postgresql pg_fetch_all

标签 php postgresql

我在使用 pg_fetch_all (postgresql) 时遇到了一个奇怪的问题:它永远不会返回更多 tan 2 列

例如,这段代码:

    $dbh = pg_connect("host=localhost dbname=dbname user=user password=passwd");
    $query = "SELECT m.id, v.nom, v.id FROM machine m, version v WHERE m.id_version = v.id;";
    $result = pg_query($dbh, $query);
    $array = pg_fetch_all($result);
    print_r($array);

仅打印我m.idv.nom!

如果我将完全相同的 SQL 请求粘贴到 pg_my_admin 中,则会返回每个列。

如果我将结果解析为

    $array = array();
    while ($row = pg_fetch_row($result)) {
      $array[] = $row;
    }

它工作得很好。为什么?

最佳答案

这是因为您有两列具有相同名称(在两个不同的表中)。您需要使用这样的别名:

$query = "SELECT m.id AS mId, v.nom, v.id AS vId FROM machine m, version v WHERE m.id_version = v.id;";

然后,您将能够检索名为 mId 的列 m.id 和名为 v.id 列视频ID 您可以在 SQL here 中找到有关别名的更多信息

它与 pg_fetch_row() 配合使用的原因是因为这个返回基于查询中列的索引的结果,而不是作为关联数组。

关于php postgresql pg_fetch_all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714821/

相关文章:

mysql - Sequelize 中每个 api 调用期间的动态数据库连接,其中有 'n' 没有数据库

sql - 事务空闲并使用 PostgreSQL 锁定

postgresql - 如果已在目标表中检测到 n 个重复值,如何在插入时抛出 SQL 错误

sql - 如何在表格中输入带有 ' 的文本?

SQL:DELETE、SELECT 和 LEFT JOIN - 我可以这样做吗?

php - 如何从对象数组中按对象属性查找条目?

php - DateDiff 为每个时区返回不同的结果

php - ffmpeg php exec不工作

javascript - 将 JSON 数据传递到 d3.json 时出错

php - 如何使用动态页面的索引号链接到页面