2

準備されたステートメントの長いトランザクションを構築できるスクリプトを持っています。実行しようとしているものを出力する方法が必要です。

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ケースはそれを必要とする可能性が最も低いものです。

4

1 に答える 1

1

PDOStatement :: debugDumpParamsはどうですか?

于 2012-04-09T03:17:36.940 に答える