ホームページ >データベース >mysql チュートリアル >MySQL の UPDATE ステートメントで「UPDATE と LIMIT の不正な使用法」がスローされるのはなぜですか?
MySQL の UPDATE ステートメントを使用してデータを変更すると、「UPDATE と LIMIT の使用法が間違っています」というエラーが発生することがあります。 。」このエラーは、複数テーブルの更新操作内で UPDATE ステートメントを ORDER BY または LIMIT 句と組み合わせようとすると発生します。
提供されたコード スニペットでは、UPDATE ステートメントが特定の条件に基づいて、users テーブルとそれに関連する contact_info テーブルの変更を試みます。ただし、このようなシナリオでは許可されない LIMIT 1 句も含まれています。
MySQL ドキュメントには、複数テーブルの UPDATE 操作には ORDER BY と LIMIT が使用されると明示的に記載されています。は使用できません。これは、UPDATE ステートメントは結合テーブル内の一致するすべての行を更新する必要があり、更新を特定の行数に制限すると予期しない結果が生じる可能性があるためです。
このエラーを解決するには、LIMIT 1 句を削除するだけです。 UPDATE ステートメントから。更新されたコードは次のようになります。
$q = "UPDATE users INNER JOIN contact_info ON contact_info.user_id = users.user_id SET active.users = NULL WHERE (email.contact_info = '" . mysqli_real_escape_string($mysqli, $x) . "' AND active.users = '" . mysqli_real_escape_string($mysqli, $y) . "')"; $r = mysqli_query ($mysqli, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($mysqli));
この変更されたコードは、一致する行の数に制限がなく、意図したとおりに更新操作を実行します。
以上がMySQL の UPDATE ステートメントで「UPDATE と LIMIT の不正な使用法」がスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。