3

我有一个大型 SQL 函数,我想通过 PHP/Propel 使用如下准备好的语句在 PostgreSQL 数据库上执行:

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

在我尝试执行的 SQL 语句中,有很多调用“引发信息……”和“引发警告……”来显示调试信息。从命令行执行 SQL,我可以看到有助于调试 SQL 的通知:

psql -h hostname database username < lots_of_sql_statements.sql

我的问题:有什么方法可以从 PHP 捕获 SQL 中引发的信息和警告通知,以便我可以记录它们以供以后分析?我在很多不同的记录上运行 SQL,如果能够记录通知而不需要单独进入命令行来查看调试信息,那就太好了。

4

1 回答 1

7

好吧,如果您使用实际的 Propel 对象,您可以通过 catch 来捕获消息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 回答