我正在尝试匹配数据库中的用户名。如果用户名匹配,则返回true,否则返回false。
即使用户名正确,它也总是会返回false。
以下是我正在使用的课程和电话:
class register{
private $result;
public function __construct($post_data, PDO $dbh){
$this->post_data = array_map('trim', $post_data);
$this->dbh = $dbh;
}
public function checkUsername(){
$stmt = $this->dbh->prepare("COUNT(*) FROM oopforum_users WHERE username = ?");
$stmt->bindParam(1, $this->post_data['reg_username'], PDO::PARAM_STR);
$stmt->execute();
$this->result = $stmt->rowCount();
if($this->result == 0){
return false;
}else{
return true;
}
}
}
$register = new register($_POST, $dbh);
if($register->checkUsername()){
//continue
}else{
echo 'ERROR: That username is taken, please choose another one.';
}
为什么即使用户名匹配也会返回false?
答案 0 :(得分:4)
您忘记了SELECT
声明:
$stmt = $this->dbh->prepare("SELECT COUNT(*) FROM oopforum_users WHERE username = ?");
除此之外,您的查询将始终返回一行(正好是1行),但该行的内容可能包含行数为0,因此您需要更改逻辑:选择实际列而不是{ {1}}并使用COUNT(*)
或读取计数值并检查。