我正在尝试在php中启动pgsql连接但是我得到 pg_last_error():没有打开PostgreSQL链接请原谅我的业余问题,因为我对php有点新。
这是我的php代码:
<?php
$connect = pg_connect("host=xxx.xx.xxx.21 dbname=d106 user=b16 password=bran") or die("Could not connect: " . pg_last_error());
$result = pg_query($connect,"SELECT distinct thestartgeom FROM bikes");
if (!$result)
{
echo "no results ";
}
while($row = pg_fetch_array($result))
{
$coor = $row['thestartgeom'];
echo $coor;
}
pg_close($connect);
?>
答案 0 :(得分:0)
在您的pgsql连接中,您错过了端口号。 试试这种方式。
<?php
$host = "host=xxx.xx.xxx.21";
$port = "port=5432";
$dbname = "dbname=d106";
$credentials = "user=b16 password=bran";
$connect= pg_connect( "$host $port $dbname $credentials" ) or die("Could not connect: " . pg_last_error());
$result = pg_query($connect,"SELECT distinct thestartgeom FROM bikes");
if (!$result)
{
echo "no results ";
}
while($row = pg_fetch_array($result))
{
$coor = $row['thestartgeom'];
echo $coor;
}
pg_close($connect);
?>
您可以将PgSQL连接代码存储在一个PHP文件中以重复使用
pgsql_db_connection.php 文件
<?php
$host = "host=xxx.xx.xxx.21";
$port = "port=5432";
$dbname = "dbname=d106";
$credentials = "user=b16 password=bran";
$connect= pg_connect( "$host $port $dbname $credentials" );
if(!$connect){
echo "Error : Unable to open database\n";
}
?>
调用其他php文件中的pgsql_db_connection.php
文件以使用您的数据库连接。
<?php
require_once('pgsql_db_connection.php');
$result = pg_query($connect,"SELECT distinct thestartgeom FROM bikes");
if (!$result)
{
echo pg_last_error($connect);
exit;
}
while($row = pg_fetch_array($result))
{
$coor = $row[0];
echo $coor;
}
?>
答案 1 :(得分:0)
当pg_connect
失败时,它返回FALSE并生成一个PHP警告,其中包含有关无法启动连接的详细信息。如果您可以看到其他消息:pg_last_error(): No PostgreSQL link opened yet
您正在报告,我希望您也应该能够看到前一个消息,这是通常告诉您失败原因的消息。
如果display_errors
配置设置设置为0
,则第一条消息不会显示在浏览器/屏幕上,但第二条消息也不会显示。
无论如何,假设您无法以任何原因(例如自定义错误处理程序)访问pg_connect
警告,那么您的代码有什么问题pg_last_error()
必须已经有打开了工作联系。
要从失败的pg_connect
访问详细的错误消息,可以使用内置的PHP函数error_get_last()
(返回数组)。
<?
$connect= pg_connect("your-connect-string");
if (!$connect) {
print_r(error_get_last());
// for only the message:
// echo error_get_last()['message']
}
die("DB connection failed");
?>
如果您更喜欢例外情况,另请参阅how to catch pg_connect() function error?。