1

このエラーが理解できません。誰かに説明してもらえますか?

PHPの致命的なエラー:27行目の/user/dal.php内の非オブジェクトに対するメンバー関数fetchColumn()の呼び出し

正規表現を使用して最後のクエリで新しいSELECT COUNT(*)クエリを実行することにより、最後のクエリのカウントを取得しようとしています。問題は$stmt->fetchColumn()致命的なエラーを引き起こし、それから私は得るError 500

function dbRowsCount($sql) {
    global $db;
    $regex = '/^SELECT\s+(?:ALL\s+|DISTINCT\s+)?(?:.*?)\s+FROM\s+(.*)$/i';
    if (preg_match($regex, $sql, $output) > 0) {
        $stmt = $db->query("SELECT COUNT(*) FROM {$output[1]}", PDO::FETCH_NUM);
        return $stmt->fetchColumn();
    }

    return false;
}

私は何が間違っているのですか?

4

2 に答える 2

3

$db->queryの呼び出しが有効なPDOオブジェクトを返すことを確認する必要があります。このようなもの:

$stmt = $db->query(...);
if (! $stmt) {
    print_r($db->errorInfo());
}
于 2012-04-27T16:37:41.600 に答える
1

おそらく

  $db->query("SELECT COUNT(*) FROM {$output[1]}", PDO::FETCH_NUM);

失敗するため、$ stmtはfalseの値を取り、fetchColumn();を呼び出すことはできません。SQLクエリに何か問題があると思います

http://www.php.net/manual/en/pdo.query.php

于 2012-04-27T16:40:22.327 に答える