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 を実行すると、結果は常に 1 つ、つまり行数になります。したがって、count( $result) は常に 1 を返します。私の例では、クエリからの COUNT を使用しています。

于 2013-02-01T17:34:20.050 に答える