Maison  >  Article  >  base de données  >  Pourquoi mon instruction MySQL UPDATE renvoie-t-elle « Utilisation incorrecte de UPDATE et LIMIT » ?

Pourquoi mon instruction MySQL UPDATE renvoie-t-elle « Utilisation incorrecte de UPDATE et LIMIT » ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 09:53:02188parcourir

Why Does My MySQL UPDATE Statement Throw

Comprendre l'erreur MySQL : utilisation incorrecte de UPDATE et LIMIT

Lors de l'utilisation de l'instruction UPDATE de MySQL pour modifier des données, vous pouvez rencontrer l'erreur « Utilisation incorrecte de UPDATE et LIMIT ". Cette erreur se produit lorsque vous tentez de combiner l'instruction UPDATE avec une clause ORDER BY ou LIMIT dans une opération de mise à jour de plusieurs tables.

Contexte :

Dans l'extrait de code fourni, l'instruction UPDATE tente de modifier la table des utilisateurs et sa table contact_info associée en fonction de conditions spécifiques. Cependant, il inclut également une clause LIMIT 1, qui n'est pas autorisée dans de tels scénarios.

La solution :

La documentation MySQL indique explicitement que pour les opérations UPDATE sur plusieurs tables, ORDER BY et LIMIT ne peut pas être utilisé. En effet, l'instruction UPDATE doit mettre à jour toutes les lignes correspondantes dans les tables jointes, et limiter la mise à jour à un nombre spécifique de lignes peut entraîner des résultats inattendus.

Pour résoudre cette erreur, supprimez simplement la clause LIMIT 1. à partir de votre instruction UPDATE. Le code mis à jour ressemblera à ceci :

$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));

Ce code modifié effectuera l'opération de mise à jour comme prévu, sans aucune restriction sur le nombre de lignes correspondantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn