php - 从 Propel ORM 捕获 SQL 通知

标签 php sql postgresql propel

我有一个大型 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 错误处理函数:

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

关于php - 从 Propel ORM 捕获 SQL 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14825080/

相关文章:

php - 使用 javascript 循环提交特定值

mysql - Mysql中如何计算一行的中位数?

sql - 如何在 HIVE 中编写以下查询

sql - PostgreSQL - 将多行数据连接到一行

ruby-on-rails - 了解事件记录查询

php - groupBy([]) 不工作

sql - 具有非标准编号的父子关系的枚举表

php - php文章搜索引擎

php - 如何在单个查询中计算多个列和字段的数量

php - DataTables服务器端处理,在具有两个变量的列中生成链接