準備されたステートメントの長いトランザクションを構築できるスクリプトを持っています。実行しようとしているものを出力する方法が必要です。
PDO のクラス メソッドはどれも有望に見えません。
編集: これは、サニティ チェックとしての (ハッキー) db アップグレード スクリプト用です。開発者は、データベースを変更するときにスクリプトに追加することになっています。
$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
ケースはそれを必要とする可能性が最も低いものです。