有没有办法打印将在pdo-> commit上执行的sql?

时间:2012-04-09 03:10:05

标签: php pdo

我有一个脚本,能够建立一个冗长的预处理语句事务,我想要一种方法来打印即将执行的内容。

PDO中的class methods看起来都没有前途。

修改 这是一个(hacky)db升级脚本,作为一个健全性检查。 Devs应该在修改数据库时附加到脚本中。

$commonStmt = $pdo->prepare("INSERT ... VALUES (:a, :b)");
function commonInsert($a, $b) {
    global $commonStmt;
    $commonStmt->bindParam(':a', $a);
    $commonStmt->bindParam(':b', $b);
    $commonStmt->execute();
}


$pdo->beginTransaction();
if ($db_version < $file_version) {
    commonInsert('a', 'b');
}
if ($db_version < $file_version) {
    commonInsert('c', 'd');
}

if ($db_version < $file_version) {
    $stmt = $pdo->prepare('INSERT ...');
    $stmt->execute();
}

if ($db_version < $file_version) {
    $pdo->query('INSERT');
}

// this will only get longer

$pdo->commit();

我可以将调试语句(根据Tamas的建议)添加到每个更新中,但这对于简单的健全性检查来说似乎很麻烦。 commonInsert案例是最不可能需要它的案例。

1 个答案:

答案 0 :(得分:1)