Php 使用PDO计算表的行数

Php 使用PDO计算表的行数,php,pdo,count,Php,Pdo,Count,我想知道,用PHP使用PDO计算表行的最佳方法是什么 这是我所拥有的,但没有为$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."; }

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

这是我所拥有的,但没有为
$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.";
}
会有用的。 如果在查询中进行计数,则始终只有一个结果,即行数。所以count($result)总是给你1。在我的示例中,我使用查询中的计数

会有用的。
如果在查询中进行计数,则始终只有一个结果,即行数。所以count($result)总是给你1。在我的示例中,我使用查询中的计数。

没有理由对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()的返回值是否为有效的PDO语句。任何错误都会导致它返回
false
,并且标量值
false
不是具有fetch()方法的对象。
换句话说,您不能以流畅的接口方式进行调用(
$con->query()->fetch()
),因为query()不能保证返回对象。

没有理由对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()的返回值是否为有效的PDO语句。任何错误都会导致它返回
false
,并且标量值
false
不是具有fetch()方法的对象。
换句话说,您不能以流畅的接口方式进行调用(
$con->query()->fetch()
),因为query()不能保证返回对象。

您想执行
计数($count)
?它返回的是INT而不是数组,对吗?var_转储的结果是什么($count);调用查询后?是否要执行
count($count)
?它返回的是INT而不是数组,对吗?var_转储的结果是什么($count);调用查询后?此代码太脏。请至少在不抛出错误的情况下执行此操作好吗?一个可能的致命错误是if query()返回的不是对象的
false
。在这种情况下使用fluent接口不安全。此代码太脏。请至少在不抛出错误的情况下执行此操作好吗?一个可能的致命错误是if query()返回的不是对象的
false
。在这种情况下使用fluent界面不安全。请解释匿名向下投票。如果你说为什么你认为这个答案是错误的或者没有回答这个问题,也许我可以改进这个答案。@NullPointer,这个帖子上的所有答案都投了一票否决票。我猜所有的否决票都来自一个用户。请解释一下匿名否决票。如果你说为什么你认为这个答案是错误的或者没有回答这个问题,也许我可以改进这个答案。@NullPointer,这个帖子上的所有答案都投了一票否决票。我猜所有的反对票都来自一个用户。