我正在构建一个登录用户的类,所以一切都在localhost上运行得很好,但是当我将文件上传到服务器时,代码并没有像预期的那样工作......
我查看了这个问题Value return when no rows in PDO,但我无法使其正常工作......
我的目标是能够从数据库中检索数据,然后检查密码是否正确。我需要3个反馈:
首先我打电话给班级:
$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.
}
我尝试使用empty和isset ...也没有在服务器上工作,他们都在本地工作。我也尝试使用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。这可能是问题吗?