Position actuelle: Accueil> Derniers articles> Comment utiliser Pdostation :: RowCount pour déterminer si l'insert réussit

Comment utiliser Pdostation :: RowCount pour déterminer si l'insert réussit

gitbox 2025-05-28

Lorsque vous utilisez PDO (objets de données PHP) dans PHP pour les opérations de base de données, la méthode PDOSTATION :: ROWCOUNT () peut être utilisée pour obtenir le nombre de lignes affectées par les instructions SQL. Pour les opérations d'insertion , nous voulons généralement utiliser RowCount () pour déterminer si l'insertion est réussie.

Qu'est-ce que PDOSTATION :: RowCount ?

Pdostatement :: RowCount () est une méthode fournie par PDO qui renvoie le nombre de lignes affectées par la dernière instruction SQL exécutée. Pour une instruction INSERT , il renvoie le nombre de lignes affectées par l'opération. En règle générale, l'insert affecte avec succès 1 ligne (si un seul insert).

 <?php
// Connectez-vous à la base de données
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");

// Insérer des données
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);

$name = 'John Doe';
$email = '[email protected]';

$stmt->execute();

// utiliser rowCount() Déterminez si l&#39;insertion réussit
if ($stmt->rowCount() > 0) {
    echo "Insertion de données avec succès!";
} else {
    echo "L&#39;insertion des données a échoué!";
}
?>

Comment déterminer si l'insert réussit?

Après avoir exécuté l'instruction INSERT à l'aide de l'APD , nous pouvons utiliser RowCount () pour déterminer si les données ont été insérées avec succès. D'une manière générale, lorsque l'instruction INSERT est exécutée avec succès, le nombre de lignes renvoyées doit être 1, ce qui signifie qu'il affecte 1 ligne de données. Si 0 est renvoyé, cela peut être dû au fait que l'instruction SQL n'est pas exécutée correctement ou qu'aucune donnée n'est insérée.

Cependant, il est important de noter que Pdostation :: RowCount () peut ne pas renvoyer un nombre exact de lignes dans certains pilotes de base de données, en particulier lors de l'utilisation de certains moteurs de stockage MySQL. Par exemple, lors de l'utilisation du moteur de stockage InNODB , RowCount () peut ne pas renvoyer les résultats attendus, en particulier lors de l'exécution des inserts par lots.

Comment déterminer le succès lors du traitement des inserts par lots?

Pour les opérations d'insertion par lots, la valeur de retour de RowCount () peut ne pas être un seul 1. Par exemple, si nous insérons plusieurs enregistrements, la valeur qu'il renvoie sera le nombre d'enregistrements qui ont été insérés avec succès.

 <?php
// Exemple d&#39;insertion par lots
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");

$data = [
    ['name' => 'Alice', 'email' => '[email protected]'],
    ['name' => 'Bob', 'email' => '[email protected]'],
    ['name' => 'Charlie', 'email' => '[email protected]']
];

foreach ($data as $user) {
    $stmt->bindParam(':name', $user['name']);
    $stmt->bindParam(':email', $user['email']);
    $stmt->execute();
}

// Déterminer le nombre de lignes insérées
if ($stmt->rowCount() === count($data)) {
    echo "所有Insertion de données avec succès!";
} else {
    echo "L&#39;insertion des données a échoué!";
}
?>

Dans cet exemple, nous utilisons RowCount () pour déterminer si le nombre d'enregistrements insérés est cohérent avec le nombre attendu. S'ils sont cohérents, toutes les données sont insérées avec succès.

Utilisez LastInsertid () pour obtenir l'ID inséré

Bien que RowCount () puisse dire si l'insertion est réussie, si nous devons obtenir l'ID du nouvel enregistrement d'insert, nous devons utiliser la méthode PDO :: LastInsertid () . LastInSertid () Renvoie l'ID de mise en oin de la dernière table de données insérée, ce qui est très utile pour les opérations qui doivent insérer et retourner l'ID d'enregistrement.

 <?php
// Insérer des données并Obtenez le dernier inséré ID
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);

$name = 'David';
$email = '[email protected]';

$stmt->execute();

// Obtenez le dernier inséré ID
$lastInsertId = $pdo->lastInsertId();
echo "Le dernier inséré ID Oui:$lastInsertId";
?>

LastInsertid () peut garantir que nous pouvons obtenir l'ID du nouvel enregistrement, en particulier lorsque d'autres opérations sont nécessaires pour insérer des données (telles que l'association avec d'autres tables).

résumé

  1. Pdostatement :: RowCount () est utilisé pour obtenir le nombre de lignes affectées par les instructions SQL après exécution.

  2. Pour l'instruction INSERT , RowCount () renvoie le nombre de lignes insérées, généralement 1 ligne, indiquant que l'insertion est réussie.

  3. Lors de l'insertion par lots, RowCount () renvoie le nombre réel d'enregistrements insérés.

  4. Si vous avez besoin d'obtenir l'ID de l'enregistrement d'insertion, vous devez utiliser la méthode PDO :: LastInsertid () .

En utilisant correctement RowCount () et LastInSertid () , vous pouvez gérer les opérations de base de données de manière plus flexible pour garantir l'exactitude et l'intégrité de l'insertion de données.