Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas utiliser LIMIT dans une requête UPDATE avec plusieurs tables dans MySQL ?
Utilisation incorrecte de UPDATE et LIMIT dans les requêtes MySQL
Question :
Comment puis-je résoudre l'erreur « Utilisation incorrecte de UPDATE et LIMIT » lors de l'exécution d'une requête MySQL ?
Problème :
Le code MySQL suivant génère une erreur en raison d'une utilisation incorrecte de UPDATE et LIMIT :
$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";
Réponse :
La documentation MySQL pour UPDATE indique :
"Pour la syntaxe à tables multiples, UPDATE met à jour les lignes dans chaque table nommée dans table_references qui satisfont aux conditions. Dans ce cas, ORDER BY et LIMIT ne peuvent pas être utilisés. "
Par conséquent, lors de l'utilisation de la syntaxe à tables multiples pour UPDATE, il n'est pas possible d'utiliser LIMIT. clause. Cette restriction est en place pour éviter les mises à jour incohérentes sur plusieurs tables.
Correction :
Pour résoudre l'erreur, supprimez la clause LIMIT de la requête :
$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) . "')";
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!