MySQL エラー: UPDATE と LIMIT の不正な使用法
MySQL で複数のテーブルに対して UPDATE クエリを実行すると、次のような理由でエラーが発生することがあります。 UPDATE と LIMIT の使用法が間違っています。この問題は、ON 条件がテーブルを結合し、LIMIT 句が使用されている複数のテーブルのレコードを更新しようとすると発生します。
UPDATE に関する MySQL ドキュメントによると、「複数テーブルの構文の場合、UPDATE は行を更新します」 table_references で指定された条件を満たす各テーブルで、ORDER BY と LIMIT は使用できません。
提供された MySQL コードでは、クエリは "users" と "contact_info" の行を更新しようとします。 " 結合条件に基づいたテーブル。ただし、LIMIT 句は、更新される行の数を 1 に制限するために使用されます。これは、複数テーブルの UPDATE クエリでは許可されません。
この問題を解決するには、クエリから LIMIT 句を削除します。これにより、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));
LIMIT 句を削除すると、クエリは、電子メール アドレスとアクティブ ステータスが指定されたものと一致する "users" テーブルと "contact_info" テーブルの両方のすべての行を更新します。値。
以上が## MySQL の複数テーブル UPDATE クエリで LIMIT 句が使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。