ホームページ > データベース > mysql チュートリアル > MySQL の UPDATE ステートメントで「UPDATE と LIMIT の不正な使用法」がスローされるのはなぜですか?

MySQL の UPDATE ステートメントで「UPDATE と LIMIT の不正な使用法」がスローされるのはなぜですか?

Barbara Streisand
リリース: 2024-10-25 09:53:02
オリジナル
299 人が閲覧しました

Why Does My MySQL UPDATE Statement Throw

MySQL エラーについて: 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート