PDOStatement::rowCount -- Întoarce numărul de rânduri afectate de ultima instrucţiune SQL
Descriere
int PDOStatement::rowCount ( void )
PDOStatement::rowCount() întoarce numărul de rânduri afectate de ultima instrucţiune DELETE, INSERT sau UPDATE executată de obiectul PDOStatement corespunzător.
Dacă ultima instrucţiune SQL executată de PDOStatement asociată a fost o instrucţiune SELECT, unele baze de date pot întoarce numărul de rânduri obţinute din instrucţiune. Însă acest comportament nu este garantat pentru toate bazele de date şi ar trebui să nu fie invocată pe aplicaţiile portabile.
Exemple
1. Întoarce numărul de rânduri şterse
PDOStatement::rowCount() întoarce numărul de rânduri afectate de o instrucţiune DELETE, INSERT sau UPDATE.
<?php
/* Sterge toate randurile din tabelul FRUIT */
$del = $dbh->prepare('DELETE FROM fruit');
$del->execute();
/* Intoarce namarul de randuri care au fost sterse */
print("Intoarce namarul de randuri care au fost sterse:\n");
$count = $del->rowCount();
print("Au fost sterse $count randuri.\n");
?>
Exemplul de mai sus va afişa:
Au fost sterse 9 randuri.
2. Numărarea rândurilor întoarse de o instrucţiune SELECT
Pentru majoritatea bazelor de date, PDOStatement::rowCount() nu întoarce numărul de rânduri afectate de instrucţiunea SELECT.
În schimb, se poate folosi PDO::query() pentru a lansa o instrucţiune SELECT COUNT(*) care conţine aceleaşi predicate ca şi instrucţiunea SELECT, apoi se foloseşte PDOStatement::fetchColumn() pentru a obţine numărul de rânduri care vor fi întoarse. Apoi aplicaţia poate realiza acţiunea corectă.
<?php
$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
if ($res = $conn->query($sql)) {
/* Verifica numarul de randuri care se potrivesc cu instructiunea SELECT */
if ($res->fetchColumn() > 0) {
/* Lanseaza instructiunea reala SELECT si lucreaza cu rezultatele */
$sql = "SELECT name FROM fruit WHERE calories > 100";
foreach ($conn->query($sql) as $row) {
print "Name: " . $row['NAME'] . "\n";
}
}
/* Daca nu sunt randuri -- se face alta operatiune */
else {
print "Nu sunt randuri care indeplinesc conditia.";
}
}
$res = null;
$conn = null;
?>
Exemplul de mai sus va afişa:
apple
banana
orange
pear