php postgresql pg_fetch_all

时间:2013-02-05 18:57:26

标签: php postgresql

我通过pg_fetch_allpostgresql)来解决一个奇怪的问题:它永远不会让我更加坦白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

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

如果我将结果解析为

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

它完美无缺。为什么?

1 个答案:

答案 0 :(得分:4)

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

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

然后,您就可以检索名为m.id的列mId和名称为v.id的{​​{1}} 您可以在SQL here

中找到有关别名的更多信息

它与pg_fetch_row()一起使用的原因是因为它会根据查询中列的索引而不是关联数组返回结果。