我遇到了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);
Run Code Online (Sandbox Code Playgroud)
只打印我m.id,v.nom!
如果我在 pg_my_admin 中粘贴完全相同的 SQL 请求,则返回每个列。
如果我将结果解析为
$array = array();
while ($row = pg_fetch_row($result)) {
$array[] = $row;
}
Run Code Online (Sandbox Code Playgroud)
它完美地工作。为什么 ?
这是因为您有两个名称相同的列(在两个不同的表中)。您需要使用这样的别名:
$query = "SELECT m.id AS mId, v.nom, v.id AS vId FROM machine m, version v WHERE m.id_version = v.id;";
Run Code Online (Sandbox Code Playgroud)
然后,您将能够检索列m.id的名称mId和v.id与名称vId
可以在SQL找到有关别名的详细信息在这里
它与pg_fetch_row()一起工作的原因是因为这个返回基于查询列索引的结果,而不是作为关联数组。