プリペアドステートメントとトランザクションは、無関係の手法とテクノロジーです。
START TRANSACTIONを発行することをお勧めします およびCOMMIT /ロールバックコード> 専用のメソッドを使用する代わりに、コマンドを直接使用します。それらは機能的に同等です。
ループの場合は、 START TRANSACTIONを発行します 前 prepare 、次に COMMIT ループが終了した後。プリペアドステートメントが開始された後、実行される前に、トランザクションを開こうとしないでください。
何らかの理由で、自動コミットをオフにするために「トランザクションの開始」コマンドを追加しませんでした。これは、mysqliの奇妙な点の1つであり、代わりに常にPDOを推奨しています。 :)トランザクションを開くと、トランザクションの期間中、自動コミットが暗黙的にオフになります。