24

现在我有一个 PHP 文件,它执行 MYSQL 查询,然后像这样计算行数:

$count=mysql_num_rows($result);


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

这工作正常,但我正在尝试将我的所有 PHP 文件更改为使用 PDO。那么如何使用 PDO 来做到这一点呢?

4

5 回答 5

23
$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');
于 2012-07-03T06:17:10.247 回答
18
$stmt = $db->query('SELECT * FROM table');  
$row_count = $stmt->rowCount();  
echo $row_count.' rows selected';
于 2016-04-12T06:54:40.307 回答
6

也许您可以使用 PDO 的“fetchAll”方法,该方法返回一个包含所有 SELECT 结果的数组。然后使用“count”方法计算数组的行数。

前任:

$rows = $stmt->fetchAll();
$num_rows = count($rows);
于 2013-01-26T04:18:20.850 回答
3

如果您没有使用准备好的语句,请尝试:

$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';
}
于 2012-07-03T06:04:29.707 回答
1

可以这样...

$numRows = $conn->query("SELECT COUNT(*) FROM yourtable")->fetchColumn();
echo $numRows; 
于 2013-04-05T07:43:31.493 回答