2016-11-25 37 views
-1

我想在php中启动一个pgsql连接,但我得到pg_last_error():尚未打开PostgreSQL链接请原谅我的业余问题,因为我对PHP有点新。如何在PHP中启动PGSQL连接?

这里是我的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

在你已经错过了端口号,你的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); 
?> 

可以存储在一个PHP文件PGSQL连接代码重用

pgsql_db_connection.php文件中的其他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"; 
} 
?> 

呼叫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; 

} 
?> 
+0

嘿人,谢谢你的回应。我收到** E_WARNING:类型2 - pg_last_error():尚未打开PostgreSQL链接** –

+0

此外,我不是试图通过本地主机连接,我试图连接到远程pgsql数据库。 –

+0

您是否允许通过配置pg_hba.conf文件来远程连接数据库服务器? –

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?如果您更喜欢例外。