我有一个大型 SQL 函数,我想通过 PHP/Propel 使用准备好的语句在 PostgreSQL 数据库上执行,如下所示:
$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,如果能够记录通知而不是必须分别进入命令行查看调试信息,那就太好了。
最佳答案
好吧,如果您使用实际的 Propel 对象,您可以通过捕获 PropelException
try {
$propelObject
->setSomething('foo')
->save()
;
} catch (PropelException $pe) {
someLoggingFunction($pe->getMessage());
}
否则,您只能使用 PDO 错误处理函数:
关于php - 从 Propel ORM 捕获 SQL 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14825080/