【发布时间】:2013-03-31 12:43:19
【问题描述】:
我正在尝试使用 PHP 访问我的新 PGSQL 数据库。 问题是我收到标题中给出的错误。 当我尝试直接连接时。它有效,当我尝试通过 PDO 连接时,它给出了这个错误。
我检查了什么:
- PHP.ini。所需的扩展名未注释(php_pgsql.dll 和 php_pdo_pgsql.dll)
- 确保这两个文件确实在 PHP 文件夹中。
-
使用简单的脚本确保数据库、主机、用户、密码和端口正确(如下所示)
这是我用于设置数据库的配置文件(我正确使用了 6 个数据库。所以我知道错误不在那个文件中)
"Aeges":{ "pdo_driver":"odbc", "user":"XXXX", "password":"XXXX", "database":"test", "host":"localhost", "port":1233 }, "Postgre":{ "pdo_driver":"pgsql", "user":"XXXX", "password":"XXXX", "database":"ASN", "host":"localhost", "port":5432 } etc..
这是我检索信息的功能。我把它清理了一下以使其清楚
public static function findAvailableASN()
{
$Postgre = db\Factory::getInstance()->create('Postgre');
$stmt = $Postgre->prepare("select * from asnregel.asnregel");
if ($stmt->execute())
{
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
/* $connect = pg_connect("host=localhost port=5432 dbname=ASN user=XXXX password=XXXX");
if(!$connect) {
die("Error in connection: ".pg_last_error());
}
$sql = "select * from asnregel.asnregel";
$result = pg_query($connect,$sql);
if(!$result) {
die("Error in sql query: ".pg_last_error());
}
while($row = pg_fetch_array($result)) {
echo $row[0].'<br/>';
echo $row[1].'<br/>';
echo $row[2].'<br/>';
echo $row[3].'<br/>';
}
pg_free_result($result);
pg_close($connect); */
}
所以问题是第一部分不起作用(带有 PDO 的部分)。虽然评论(没有PDO的部分)确实如此。有点奇怪吧?
谁能帮我解决这个问题?
【问题讨论】:
-
你试过
$stmt = $Postgre->prepare("select * from asnregel")吗? -
db\Factory是错字吗? -
错误出现在哪一行?
-
@wildplasser 也不起作用。但由于架构,我需要 asnregel.asnregel。 “select * from asnregel”在“简单测试”中也不起作用,而“select * from asnregel.asnregel”则起作用
-
@Voitcus 不,这不是错字。它没有给我一个错误行。只是 pdo 错误:“无法建立数据库连接:无效的数据源名称”。
标签: php sql postgresql pdo