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() はオブジェクトを返すことが保証されていないため、流暢なインターフェイスの方法 ( ) で呼び出しを行うことはできません。