2016-11-25 2 views
-1

私はPHPでpgsql接続を開始しようとしていますが、私はを受け取ります。pg_last_error():まだPostgreSQLのリンクが開かれていません。私のアマチュア問題は、あなたは、ポート番号を見逃しているあなたpgsqlの接続ではPHPでPGSQL接続を開始するにはどうすればよいですか?

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

は、ここに私の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" ) 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_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ファイル、データベース接続を使用することを再利用するために、1つのPHPファイルにPgSQLの接続コードを格納することができます。

<?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 dbに接続しようとしています。 –

+0

pg_hba.confファイルを設定して、データベースサーバへのリモート接続を許可しましたか? –

0

pg_connectが失敗した場合、それはFALSEを返し、それが接続を開始できなかった理由に関する詳細情報とPHPの警告を生成します。あなたが報告している他のメッセージ:pg_last_error(): No PostgreSQL link opened yetを見ることができれば、前のものも見ることができるはずです。これは通常、失敗の理由を伝えるメッセージです。

display_errorsの設定を0に設定した場合、最初のメッセージはブラウザ/画面に表示されませんが、2番目のメッセージは表示されません。

とにかく、あなたがカスタムエラーハンドラなど何らかの理由で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?も参照してください。

関連する問題