Maison >développement back-end >tutoriel php >Pourquoi PDO renvoie-t-il \'SQLSTATE[HY000]\' au lieu de succès après une requête de mise à jour ?
Lors de la tentative de mise à jour d'une base de données à l'aide de PDO, l'erreur "SQLSTATE[HY000] : Erreur générale" peut être restitué. Cette erreur peut sembler déroutante, car la base de données est mise à jour avec succès malgré l'erreur signalée.
Cause de l'erreur
La cause première de cette erreur est l'utilisation inappropriée de la méthode fetchAll() après une requête de mise à jour ou d'insertion. La méthode fetchAll() de PDO est généralement utilisée pour récupérer toutes les lignes affectées par une requête de sélection. Cependant, lors de l'exécution d'une opération de mise à jour ou d'insertion, cette méthode n'est pas nécessaire.
Exemple de code incorrect
Le code suivant tente de mettre à jour une table de base de données et de récupérer tout lignes mises à jour à l'aide de fetchAll() :
try { $stmt = $pdo->prepare("UPDATE $page SET $section = :new_content WHERE $section = '$old_content'"); $stmt->execute(array('new_content' => $new_content)); $result = $stmt->fetchAll(); echo "Database updated!"; } catch(PDOException $e) { echo 'ERROR UPDATING CONTENT: ' . $e->getMessage(); }
Dans ce cas, l'erreur "SQLSTATE[HY000] : Erreur générale" sera générée en raison de l'utilisation de fetchAll() après la requête de mise à jour.
Solution correcte
Pour rectifier cette erreur, supprimez simplement l'instruction fetchAll() du code. Le code révisé ressemblerait à ceci :
try { $stmt = $pdo->prepare("UPDATE $page SET $section = :new_content WHERE $section = '$old_content'"); $stmt->execute(array('new_content' => $new_content)); echo "Database updated!"; } catch(PDOException $e) { echo 'ERROR UPDATING CONTENT: ' . $e->getMessage(); }
En omettant l'instruction fetchAll(), le message d'erreur "SQLSTATE[HY000] : Erreur générale" devrait disparaître, vous laissant avec une mise à jour réussie de la base de données.
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!