Maison >base de données >tutoriel mysql >Pourquoi MySQL renvoie-t-il l'erreur « Utilisation incorrecte de UPDATE et LIMIT » ?

Pourquoi MySQL renvoie-t-il l'erreur « Utilisation incorrecte de UPDATE et LIMIT » ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 11:20:02731parcourir

Why Does MySQL Throw

Utilisation incorrecte de UPDATE et LIMIT

Les utilisateurs MySQL peuvent rencontrer l'erreur « Utilisation incorrecte de UPDATE et LIMIT » lorsqu'ils tentent d'exécuter des requêtes impliquant à la fois l'instruction UPDATE et l'instruction UPDATE. Clause LIMIT.

Pour résoudre ce problème, il est important de comprendre les limites de l'instruction UPDATE lorsqu'elle est utilisée avec plusieurs tables. Selon la documentation MySQL, "Pour la syntaxe à tables multiples, UPDATE met à jour les lignes de chaque table nommées dans table_references qui satisfont aux conditions. Dans ce cas, ORDER BY et LIMIT ne peuvent pas être utilisés."

Dans l'exemple code fourni :

$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) . "') LIMIT 1";

La requête tente d'effectuer une mise à jour en utilisant plusieurs tables (users et contact_info) tout en appliquant également une clause LIMIT. Comme expliqué précédemment, LIMIT ne peut pas être utilisé dans de tels scénarios.

Pour résoudre le problème, envisagez de modifier la requête comme suit :

$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) . "');";

En supprimant la clause LIMIT, la requête s'exécutera avec succès et mettez à jour la ou les lignes spécifiées dans la table des utilisateurs.

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