Альтернатива для mysql_num_rows с использованием PDO

Прямо сейчас у меня есть PHP файл, который выполняет MYSQL-запрос, а затем подсчитывает такие строки:

$count=mysql_num_rows($result);


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

Это отлично работает, но я пытаюсь изменить все мои PHP файлы для использования PDO. Итак, как это можно сделать с помощью PDO?

Ответы

Ответ 1

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

или

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

Вы можете использовать это, чтобы спросить, существуют ли данные или они выбраны:

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

Или с вашими переменными:

$res = $DB->query('SELECT COUNT(*) FROM table');
$message = ($res->fetchColumn() > 0) ? array('status' => 'ok') : array('status' => 'error');

Ответ 2

Возможно, вы можете использовать метод PDO "fetchAll", который возвращает массив, содержащий все результаты SELECT. Затем используйте метод count для подсчета строк массива.

Пример:

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

Ответ 3

$stmt = $db->query('SELECT * FROM table');  
$row_count = $stmt->rowCount();  
echo $row_count.' rows selected';

Ответ 4

Если вы не используете подготовленные инструкции, попробуйте:

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

Однако, если вы выберете подготовленные инструкции, которые я настоятельно рекомендую, тогда:

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

Ответ 5

Может быть так...

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

Ответ 6

 $jmldata     = $db->query("SELECT count(*) FROM blog_posts")->fetchColumn();
  $jmlhalaman  = $p->jumlahHalaman($jmldata, $batas);
  $linkHalaman = $p->navHalaman($_GET['halpost'], $jmlhalaman);

  echo "<div class='center_title_bar'>Halaman : $linkHalaman </div>
  </div></div></div>
  ";

он работает благодаря:)

Ответ 7

 //query for  counting  the total number of rows
$result = $conn->prepare("SELECT COUNT(*) FROM your_table"); 
    $result->execute();
    $num_rows =  $result->fetchColumn();

     //condition to display the result
    if ($num_rows>0)
    {
        echo "there is some results =".$num_rows;
    }else{
        echo "no result";
    }