2

我在pg_fetch_all( postgresql) 遇到了一个奇怪的问题:它永远不会返回我更多的棕褐色 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 请求,则会返回每个列。

如果我将结果解析为

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

它完美地工作。为什么 ?

4

1 回答 1

5

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

$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具有名称mIdv.id名称的列您可以在此处vId 找到有关 SQL 中别名的更多信息

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

于 2013-02-05T18:59:18.087 回答