代码之家  ›  专栏  ›  技术社区  ›  qwerto

SQLite和PHP注册系统不工作

  •  2
  • qwerto  · 技术社区  · 10 年前

    这是我使用PHP和SQLite的注册代码。当它肯定不存在时,它会继续使用“用户已经存在”语句。我检查数据库中的用户名是否大于1(如果存在),但它没有,但如果我回显计数,它总是说它等于1。。。

    $checkUser = $db->prepare('
        SELECT COUNT(*) 
        FROM users
        WHERE 
        user = ?
    ');
    
    $checkUser->setFetchMode(PDO::FETCH_ASSOC);
    $checkUser->execute(array($user));
    
    
    $numrows = count($checkUser);
    
    if ($numrows == 0) {
    
        try {
    
            $reg = $db->prepare("
                INSERT
                INTO users
                (user, pass, email)
                VALUES
                ('$user', '$pass', '$email')  
            ");
    
            $reg->setFetchMode(PDO::FETCH_ASSOC);
            $reg->execute();
    
        } catch (PDOException $e) {
            print_r($e->getMessage());
        }
    
        echo ('success...');
    }
    else {
    
    
        die ('user already exists');
    }
    
    1 回复  |  直到 10 年前
        1
  •  0
  •   Rasclatt    10 年前

    我不使用SQLite,但你看起来像你的 $numrows 正在检查执行是否已成功运行( boolean true/false ). 尝试更新此位:

    // I like to name "count" otherwise returned as "COUNT(*)" in the array key
    $checkUser = $db->prepare('
        SELECT COUNT(*) as count
        FROM users
        WHERE 
        user = ?
    ');
    
    // Execute with bind
    $checkUser->execute(array($user));
    // Fetch an associative array
    $result =   $checkUser->fetch(PDO::FETCH_ASSOC);
    // The count will be here as a numeric
    if ($result['count'] == 0) {
    
    推荐文章