Position actuelle: Accueil> Derniers articles> Comment utiliser Pdostation :: RowCount pour obtenir le nombre réel de lignes affectées par une requête de mise à jour

Comment utiliser Pdostation :: RowCount pour obtenir le nombre réel de lignes affectées par une requête de mise à jour

gitbox 2025-05-28

PDOSTATION :: ROWCOUNT () est une méthode courante mais souvent mal compris lors de l'exploitation d'une base de données à l'aide de l'APD dans PHP. Surtout après avoir exécuté des instructions de mise à jour ou de suppression , nous les utilisons souvent pour déterminer si les données ont été "mises à jour" ou "supprimées". Mais connaissez-vous les détails du comportement derrière cela?

Utilisation de base

 $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'password');
$sql = "UPDATE users SET status = 'active' WHERE last_login > :date";
$stmt = $pdo->prepare($sql);
$stmt->execute([':date' => '2024-01-01']);

echo "Mis à jour " . $stmt->rowCount() . " Records de ligne";

Ce code exécute une instruction de mise à jour , à l'aide de RowCount () pour obtenir le nombre réel de lignes affectées.

Choses à noter

  1. Seulement valide pour DML : RowCount () peut renvoyer correctement le nombre de lignes affectées après insérer , mettre à jour et supprimer . Mais pour sélectionner , le pilote MySQL renvoie généralement 0.

  2. Liés aux modifications de données : RowCount () peut renvoyer 0 si les données de ligne cible ne changent pas vraiment (c'est-à-dire que la nouvelle valeur est la même que l'ancienne valeur). Ceci est un problème avec le comportement de MySQL, pas PDO.

  3. Pas égal à "Match Nombre of Rows" : il compte "Nombre de lignes qui changent réellement", pas "Nombre de lignes qui remplissent les conditions d'où".

Exemple: détecter si les informations de l'utilisateur sont mises à jour

 $sql = "UPDATE users SET email = :email WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':email' => '[email protected]', ':id' => 1]);

if ($stmt->rowCount() > 0) {
    echo "Les informations de l'utilisateur ont été mises à jour";
} else {
    echo "Pas de mise à jour,Il se peut que les données n'ont pas changé ou ID N'existe pas";
}

La maîtrise du comportement de RowCount () peut rendre votre logique commerciale plus rigoureuse et éviter de mal juger si le fonctionnement de la base de données entre en vigueur. Pour plus d'exemples, veuillez consulter https://gitbox.net/docs/pdo-update .