Lorsque vous utilisez PDO de PHP (PHP Data Objectts) pour faire fonctionner une base de données, les développeurs doivent souvent déterminer si une instruction SQL est exécutée avec succès, en particulier lors de l'exécution d'opérations d'insertion , de mise à jour ou de suppression . La méthode PDOSTATION :: RowCount fournit un moyen pratique de vérifier le nombre de lignes affectées pour déterminer si le fonctionnement de la base de données est valide.
RowCount () est une méthode de la classe PDOSTATION qui renvoie le nombre de lignes affectées par l'instruction SQL précédente. Pour les instructions des types de suppression , d'insertion et de mise à jour , le pilote dépend de la présence de l'instruction SELECT (par exemple, MySQL Select ne prend pas en charge le rendement précis de la ligne par défaut).
$affectedRows = $statement->rowCount();
où l'instruction $ est l'objet de retour après l'exécution via $ PDO-> Préparer () et $ instruction-> EXECUTE () .
Jetons un coup d'œil à un exemple pratique, démontrant comment utiliser RowCount () pour déterminer si une opération de mise à jour met à jour avec succès les données.
<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=example_db", "username", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE users SET email = :email WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':email', $newEmail);
$stmt->bindParam(':id', $userId);
$newEmail = "[email protected]";
$userId = 3;
$stmt->execute();
if ($stmt->rowCount() > 0) {
echo "Informations utilisateur mises à jour avec succès,Mis à jour au total " . $stmt->rowCount() . " Enregistrer。";
} else {
echo "Aucun enregistrement n'a été mis à jour,Cela peut être dû au fait que les données n'ont pas changé ou que l'utilisateurIDN'existe pas。";
}
} catch (PDOException $e) {
echo "Le fonctionnement de la base de données a échoué: " . $e->getMessage();
}
?>
Prise en charge limitée pour SELECT : Bien que certains pilotes de la base de données prennent en charge RowCount () après une requête de sélection , ce n'est pas un comportement compatible en database croisée. Si vous avez besoin d'un nombre exact de lignes sélectionnées, envisagez d'utiliser fetchall () et compter le tableau de résultat.
Un nombre de lignes de 0 n'est pas égal à une défaillance : lorsque les données mises à jour sont les mêmes que les données d'origine, l'exécution de SQL est réussie mais n'affectera aucune ligne, RowCount () renvoie 0. Cette situation ne doit pas être considérée comme un échec, mais plutôt comme "aucun changement".
Utilisation dans une transaction : l'utilisation de RowCount () dans une transaction ne sera pas affectée. Vous pouvez décider de commettre ou de faire reculer une transaction en fonction de la valeur de retour.
PDOSTATION :: ROWCOUNT est un outil puissant pour déterminer si une opération d'écriture de base de données prend effet et est particulièrement utile lorsqu'il est nécessaire de fournir des commentaires aux utilisateurs ou d'effectuer des jugements logiques. Cependant, les développeurs doivent comprendre comment il se comporte dans différents contextes pour éviter les malentendus des résultats opérationnels.
En utilisant rationnellement RowCount () , la robustesse et l'expérience utilisateur des applications PHP peuvent être améliorées. Si vous rencontrez des effets de fonctionnement de la base de données incertains pendant le développement, essayez d'introduire RowCount () pour améliorer les capacités de contrôlabilité et de rétroaction de votre code.