web-dev-qa-db-fra.com

Alternative pour mysql_num_rows utilisant PDO

En ce moment, j'ai un fichier PHP qui fait une requête MYSQL puis compte les lignes comme ceci:

$count=mysql_num_rows($result);


if ($count == 1) {
    $message = array('status' => 'ok');
} else {
    $message = array('status' => 'error');
}

Cela fonctionne bien, mais j'essaie de changer tous mes fichiers PHP pour utiliser PDO. Alors, comment cela peut-il être fait avec PDO?

19
user1323294
$res = $DB->query('SELECT COUNT(*) FROM table');
$num_rows = $res->fetchColumn();

ou

$res = $DB->prepare('SELECT COUNT(*) FROM table');
$res->execute();
$num_rows = $res->fetchColumn();

Vous pouvez l'utiliser pour demander si des données existent ou sont également sélectionnées:

$res = $DB->query('SELECT COUNT(*) FROM table');
$data_exists = ($res->fetchColumn() > 0) ? true : false;

Ou avec vos variables:

$res = $DB->query('SELECT COUNT(*) FROM table');
$message = ($res->fetchColumn() > 0) ? array('status' => 'ok') : array('status' => 'error');
22
WolvDev
$stmt = $db->query('SELECT * FROM table');  
$row_count = $stmt->rowCount();  
echo $row_count.' rows selected';
11
user2474611

Vous pouvez peut-être utiliser la méthode "fetchAll" de PDO, qui renvoie un tableau contenant tous les résultats SELECT. Utilisez ensuite la méthode "count" pour compter les lignes du tableau.

Ex:

$rows = $stmt->fetchAll();
$num_rows = count($rows);
5
priki

Si vous n'utilisez pas d'instructions préparées, essayez:

$find = $dbh->query('SELECT count(*) from table');
if ($find->fetchColumn() > 0){
    echo 'found';
}

Cependant, si vous choisissez des déclarations préparées, que je recommande fortement, alors:

$find = $dbh->prepare('SELECT count(*) from table');
$find->execute();
if ($find->fetchColumn() > 0){
    echo 'found';
}
3
shxfee

Peut être comme ça ...

$numRows = $conn->query("SELECT COUNT(*) FROM yourtable")->fetchColumn();
echo $numRows; 
1