当没有行符合查询条件时,PDO语句究竟会返回什么?

时间:2015-03-07 03:27:44

标签: php pdo fetch

我正在构建一个登录用户的类,所以一切都在localhost上运行得很好,但是当我将文件上传到服务器时,代码并没有像预期的那样工作......

我查看了这个问题Value return when no rows in PDO,但我无法使其正常工作......

我的目标是能够从数据库中检索数据,然后检查密码是否正确。我需要3个反馈:

  1. 用户不存在
  2. 通行证/用户组合不匹配。
  3. 一切顺利,继续并登录用户。
  4. 首先我打电话给班级:

    $a = $login->login_user_admin($_POST['user']);
    

    然后我得到了结果:更新了全班&连接

    class Database extends PDO
    {
    private $dbname = "xxx";
    private $host = "localhost";
    private $user = "xxx";
    private $pass = "xxx";
    private $port = 5432;
    private $dbh;
    
    public function __construct() 
    {
        try {
    
            $this->dbh = parent::__construct("pgsql:host=$this->host;port=$this->port;dbname=$this->dbname;user=$this->user;password=$this->pass");
    
        } catch(PDOException $e) {
    
            echo  $e->getMessage(); 
    
        }
    
    }
    
    public function close_con() 
    {
    
        $this->dbh = null; 
    
    }
    
    }
    
    class Users
    {
    
    private $con;
    public function __construct()
    {
        $this->con = new Database();
        $this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
        $this->con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    }
    
    public function login_user_admin($user)
    {
    
        try{
    
            $stmt = $this->con->prepare("SELECT name,salt,pass FROM users.users_admin WHERE name=? LIMIT 1");
            $stmt->execute(array($user));
    
            $this->con->close_con();
            return $stmt->fetch(PDO::FETCH_ASSOC);
    
        } catch(PDOException $e) {
    
            echo  $e->getMessage();
    
        }   
    }
    }
    

    最后我处理:

    $data = [];
    if ($a!=true) {
    
    $data['success'] = false;
    $data['message'] = 'User doesn't exist';
    
    }else{
    
    //All good proceed to chk the password.
    }
    

    我尝试使用emptyisset ...也没有在服务器上工作,他们都在本地工作。我也尝试使用fetchAll()并检查空字符串,但我无法做到。

    我去检查服务器和本地的PHP版本,并且它们都运行在5.5上,所以我现在用完了想法,我将非常感谢你的帮助。

    更新! 我上传一个只包含此代码的文件,以检查我是否从数据库中获得任何结果,并且我意识到我不是,

    include '../functions/functions.php';
    $login = new Users();
    $a = $login->login_user_admin("emirocast");
    print_r($a);
    var_dump($a);
    

    目前数据库中唯一的用户是" emirocast"所以我应该得到结果,但我得到一个布尔(假)而不是。

    我注意到的另一件事是服务器正在运行Postgresql 8.4并且我在本地运行9.1。这可能是问题吗?

0 个答案:

没有答案