3

次のような準備済みステートメントを使用して、PHP/Propel を介して PostgreSQL データベースで実行したい大きな SQL 関数があります。

$sql = "lots of SQL statements";
$statement = $propelPDO->prepare($sql);
$statement->execute();

実行しようとしている SQL ステートメントには、デバッグ情報を表示する「raise info ...」および「raise warning ...」の呼び出しが多数あります。コマンド ラインから SQL を実行すると、SQL のデバッグに役立つ次の通知が表示されます。

psql -h hostname database username < lots_of_sql_statements.sql

私の質問: 後で分析するためにログに記録できるように、PHP から SQL で発生した情報と警告通知を取得する方法はありますか? 多くの異なるレコードに対して SQL を実行していますが、デバッグ情報を確認するために個別にコマンド ラインに移動する代わりに、通知をログに記録できると便利です。

4

1 に答える 1

7

実際の Propel オブジェクトを使用すると、メッセージをキャッチしてメッセージをキャッチできますPropelException

try {
    $propelObject
        ->setSomething('foo')
        ->save()
    ;
} catch (PropelException $pe) {
    someLoggingFunction($pe->getMessage());
}

それ以外の場合は、単に PDO エラー処理関数に限定されます。

http://www.php.net/manual/en/pdo.error-handling.php

于 2013-02-12T03:55:20.520 に答える