简体   繁体   中英

PHP PDO rowCount not working? I think

So I am grabbing the amount of rows in a specific table where the username is already in the database like so:

$second_sql = $db->prepare("SELECT * FROM users WHERE username = :username");    
$second_sql->bindParam(':username', $username);    
$second_sql->execute();

if($second_sql->rowCount() == 1) {
  $db = null;
  header("Location: ../login/");
} else {
  $statement->execute();
  $db = null;
}

The problem is it's not working. If you need more of the script just tell me.

Some databases does not report the row count with PDO->rowCount() method.

SQLite, for instance.

So don't use rowCount() ; doing so makes your code less portable.

Instead use the COUNT(*) function in your query, and store the result in a variable.

Finally, use that variable to fetch the one and only column (users) using the fetchColumn() method.

So you can play with this:

try {
    $second_sql = $db->prepare("SELECT COUNT(*) from users WHERE username = :username");
    $second_sql->bindParam(':username', $username, PDO::PARAM_STR);
    $second_sql->execute();
    $count = $second_sql->fetchColumn();
} catch (PDOException $e) {
    // Here you can log your error
    // or send an email
    // Never echo this exception on production
    // Only on development fase
    echo "Error: " . $e->getMessage();
}

if ($count) {
    $db = null;
    header("Location: ../login/");
} else {
    $statement->execute();
    $db = null;
}

Perhaps you wanna test you condition for a single row:

if ($count == 1)

Hope this helps you.

Cheers!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM