以下のコード スニペットに示すように、PHP を使用して連続した MYSQL ステートメントを?qū)g行しようとしています (行を別の行にコピーし、tmp テーブルを介して ID の名前を変更するだけです)。
重複した構(gòu)文エラー メッセージが表示されます。數(shù)え切れないほどの繰り返しを試してきました。このコードは、私が PHP マニュアルや SO に関する他の mysql の質(zhì)問で調(diào)べたコードと似ています (php ディメンションを除く)。
私の php 構(gòu)文が間違っている理由を説明できる人はいますか?
リーリーPHP メッセージの戻り値:
テーブル作成エラー: SQL 構(gòu)文にエラーがあります。MariaDB サーバーのバージョンのマニュアルで「UPDATE tmp SET id=100 WHERE id = 1INSERT INTOevent_categoriesBU SELECT * FROM t at line 1」を確認(rèn)してください。近くで使用する正しい構(gòu)文「
一度に大量のクエリを?qū)g行しないでください。多くの場合、これらの操作の 1 つが成功するかどうかは、他のすべての操作が正しく実行されるかどうかに依存します。そのため、何か問題が発生した場合、何も問題がなかったかのようにそのまま続行することはできません。
###あなたはこれを行うことができます:### リーリー例外を有効にすることを忘れないでください
そうすれば、クエリの失敗によって事態(tài)が制御不能になるのではなく、プロセスが停止します。あなたが multi_query
を使用しない理由は、この関數(shù)がプレースホルダー値をサポートしていないためです。このクエリに何らかのユーザー データを取り込む必要がある場合は、安全に行うためにbind_param を使用する必要があります。プレースホルダー値がないと SQL インジェクション エラーにさらされ、その 1 つでアプリケーション全體が脆弱になる可能性があります。
PDO は
mysqli よりも柔軟性と適応性が高いことに注意してください。そのため、
mysqli