如何在PHP中启动PGSQL连接?

时间:2016-11-25 01:57:45

标签: php postgresql

我正在尝试在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);
?>

2 个答案:

答案 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?