0

我想知道,使用 PDO 使用 PHP 计算表行数的最佳方法是什么?

这是我所拥有的,但没有得到任何东西$count

$count = $con -> query("SELECT COUNT(*) FROM item_descr")->fetch(PDO::FETCH_NUM);
echo $count[0];
if (count($count)>0)
{
$subStatus = "The email introduced is already in our database.";
}
4

2 回答 2

2

没有理由对 fetch() 返回的数组使用 PHP count() 函数。计数已在 SQL 中计算,因此您希望将存储在结果中,而不是结果的计数。

我会这样写:

$countStmt = $con->query("SELECT COUNT(*) FROM item_descr");
if ($countStmt === false) {
  // do something to report the error
}
$count = 0;
while ($row = $countStmt->fetch(PDO::FETCH_NUM)) {
  $count = $row[0];
}
if ($count > 0)
{
  $subStatus = "The email introduced is already in our database.";
}

始终检查 query() 的返回值是否是有效的 PDOStatement。任何错误都会导致它返回false,并且标量值false不是具有 fetch() 方法的对象。换句话说,您不能以流畅的接口方式($con->query()->fetch())进行调用,因为 query() 不能保证返回对象。

于 2013-02-01T17:45:42.227 回答
1
$count = $con->query("SELECT COUNT(*) as `num` FROM `item_descr`")
             ->fetch(PDO::FETCH_ASSOC);

echo $count['num'];

if ( $count['num'] > 0 )
{
  $subStatus = "The email introduced is already in our database.";
}

会工作。如果您在查询中执行 COUNT,您将始终只有一个结果,即行数。所以 count($result) 总是会给你 1。在我的例子中,我使用查询中的 COUNT。

于 2013-02-01T17:34:20.050 回答