我如何使用 PDO PHP 计算 SQLite3 中受影响的行数?

How can i count affected rows in SQLite3 with PDO PHP?

您好,我正在尝试检查 IP 是否在阻止列表中。 我在 PHP 中使用 SQLite3。我的问题是当尝试检查它下面的函数时 returns 总是正确的。

    function isBlocked($ip){
        global $pdo;
        $check = $pdo->prepare("SELECT * FROM blockedUsers WHERE ip='".$ip."'");
        $check->execute();
        if($check->rowCount() >= 1){
            return true;
        }else{
            return false;
        }
    }

使用 SELECT COUNT(*) 而不是 SELECT *,因为您不关心行数据,只关心计数。

此外,使用参数而不是将变量替换为 SQL。

function isBlocked($ip){
    global $pdo;
    $check = $pdo->prepare("SELECT COUNT(*) AS count FROM blockedUsers WHERE ip=:ip");
    $check->execute([':ip' => $ip]);
    $row = $check->fetch(PDO::FETCH_ASSOC);
    return $row['count'] > 0;
}