PDO:如何进行检查

时间:2014-10-23 14:34:36

标签: php mysql pdo

我创建了这个类,但我是PHP OOP&的新手。 PDO和我不知道我必须如何以及在哪里检查用户名是有效的,电子邮件是有效的,并且e.t.c ..

这是我的代码

Class Users {
    private $db;

        public function __construct(Database $datebase) {
            if (!$database instanceOf Database) {
                throw new Exeption();
            }
            $this->db = $datebase;
        }

        public function userRegistration($username, $password, $email) {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $email    = $_POST['email'];
            $regdate  = date('d.m.Y');

                $query = $this->db->prepare("INSERT INTO `users` (`username`, `password`, `email`, `regdate`) VALUES (?, ?, ?, ?) ");
                $query->bindValue(1, $username);
                $query->bindValue(2, $password);
                $query->bindValue(3, $email);
                $query->bindValue(4, $regdate);

            return ($query->execute()) ? true : false ;
        }

}

3 个答案:

答案 0 :(得分:0)

如果您想查看内容,请使用Respect/Validation。例如:

$usernameValidator = v::alnum()->noWhitespace()->length(1,15);
$usernameValidator->validate($_POST['username']); //true or false

$passwordValidator = v::alnum()->length(10, null);
$passwordValidator->validate($_POST['password']); //true or false

v::email()->validate($_POST['email']); //true or false

答案 1 :(得分:0)

要检查数据库中是否存在用户名或电子邮件,您可以使用SQL搜索电子邮件或用户名。

  $query = $this->db->prepare("SELECT * FROM users WHERE email = ? ");
                $query->bindValue(1, $email);

如果查询返回的值不是数据库中已存在的电子邮件或用户名。从那里,您可以显示自己的验证。

答案 2 :(得分:0)

要检查是否存在用户或电子邮件,您不需要其他类,只需添加另一个名为userExist或emailExist的方法并运行查询,然后检查您是否获得了结果。

  public function emailExist($email){
       $query = $this->db->prepare("SELECT * FROM users WHERE email = ? ");
       $query->bindValue(1, $email);
       try{
           $query->execute();
           //use the if statement and $query->rowCount() to check if there is a result
            $rows = $query->rowCount();
            if($rows === 1){
                  return true;
            } else {
                  return false;
            } 
       }catch (PDOException $e) {
            die($e->getMessage());
       }
  }