2017-02-08 17 views
0

を返していないながら、私はいくつかのレガシーPHPコードを更新し、いくつかのまともなエラーログを取得しようとしている、コンソールに直接行きます。 pg_last_errorは何も返さないながらもかかわらず(、pg_queryエラーがpg_last_errorは何も

private function dbQuery($sql) { 
     if (DEBUG) print("\n" . $sql . "\n"); 
     $result = pg_query($this->dbh, $sql); 
     if ($result == FALSE) print("DB Error: " . pg_last_error($this->dbh) . "\n"); 
     return $result; 
    } 

しかし、少なくとも一つの場合には、エラーが(PHPの警告として)全て自身でコンソールに表示されている:DBへのすべての呼び出しは、今、この機能を経ますpg_query呼び出しの結果はFALSEです)。実際の出力:

insert into pull_count (show_pull_item_id, count_pulled, created, modified) values (1076028, 1, NOW(), NOW()) 
PHP Warning: pg_query(): Query failed: ERROR: permission denied for relation pull_count in /var/www/html/src/backend/engine.php on line 1740 
DB Error: 

そして、私たちが再びpg_last_error()を呼び出す呼び出し関数では、何も得られません。

そう...契約は何ですか?なぜエラーはpg_last_errorではなくコンソールに送られますか?どうすれば修正できますか?

+0

詳しい調査はそれが権限エラーとは何の関係もないことを示しています...私のクエリ文字列がまったく誤りが含まれている場合、私は同じ結果を得る:コンソールでのPHPの警告、およびpg_last_errorからまったく何も() 。この動作に影響を与える設定がありますか? –

答えて

0

OK、それは私が...コードが正しくサーバーにプッシュなっていなかったばかが判明したので、私はこのように見えた古いコードテストしていた:失敗

private function dbQuery($sql) { 
    if (DEBUG) print("\n" . $sql . "\n"); 
    $result = pg_query($this->dbh, $sql); 
    if ($result == FALSE) print("DB Error: " . pg_last_error() . "\n"); 
    return $result; 
} 

注意をpg_last_error呼び出しでDB接続ハンドルをインクルードします。これが結果を返さない理由です。

私はまだコンソールでPHP警告を受け取りますが、私はでもを取得すると、すべてが世界で正しいです。

関連する問題