0

私のプロジェクトでは、多くのテーブルにわたって多くの行を削除および更新するため、トランザクションを使用することにしました。ただし、エラーが発生してスクリプトが終了している場合でも、トランザクションはコミットされます。

そのサーバーではサポートされていないため、mysqli_またはPDOではなくmysql_のみを使用します。

mysql_query("START TRANSACTION");
$res = mysql_query("some insert...");
if($res === false){
  //this save error log and exit script with die() or exit()
  trigger_error(mysql_errno()."\n".mysql_error()); 
}
$res = mysql_query("some delete...");
if($res === false){
  trigger_error(mysql_errno()."\n".mysql_error()); 
}
mysql_query("COMMIT");

私のプロジェクトでは、mysql のクラスを持っているので、このように入力しませんが、このように動作します。

最初のクエリ エラーが発生した後、エラー ログが保存され、終了スクリプトが終了します。ただし、挿入されたデータはDBに残ります。ただし、COMMIT実行されずに接続が閉じられると、自動的にROLLBACK発生します。

PS mysqli を使用する方が良いことはわかっていますが、これはmysql_mysqli_についても同じですよね?

4

2 に答える 2