これを行う前にトランザクションを開始してください。
トランザクションを開始することをデータベースに伝える必要があるためです。
自動コミット(FALSE)後には、$db->begin_transaction();
を入力する必要があります。
お読みくださいドキュメンテーション:mysqli::begin_transaction
P.S.エンジンがトランザクションをサポートしていないテーブルではできないことに注意してください。したがって、begin_transaction
ステートメントrollback()
を追加しても機能しない場合は、テーブルエンジンでトランザクション対応のエンジンに設定されていることを確認してください。
mysqlの端子であなたのテーブルエンジンコールクエリを確認するには:
SHOW TABLE STATUS FROM database_name_goes_here;
あなたが定義されたエンジンとデータベース内のテーブルのリストを取得します。
(取引を見つける:YES):mysqlの端末にクエリを呼び出すことによって、あなたが行うことができますトランザクションセーフエンジンのリストを取得するには
mysql> SHOW ENGINES\G
*************************** 1. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
*************************** 2. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 3. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
...
をコミットおよびロールバックできるようにするには、クエリを実行する前に、トランザクションを開始する必要があります – num8er