我在使用 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.id
,v.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
和名为 的
您可以在 SQL here 中找到有关别名的更多信息v.id
列视频ID
它与 pg_fetch_row() 配合使用的原因是因为这个返回基于查询中列的索引的结果,而不是作为关联数组。
关于php postgresql pg_fetch_all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714821/