我正在努力学习OOP及其一些概念。我跟着用户上课:
class Users
{
private $host = DB_HOST;
private $user = DB_USERNAME;
private $pass = DB_PASSWORD;
private $dbname = DB_NAME;
private $conn;
private $stmt;
public $error;
function __construct()
{
$dsn = 'mysql:host='.$this->host.';dbname='.$this->dbname.';charset=utf8';
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
try {
$this->conn = new PDO($dsn,$this->user,$this->pass,$options);
} catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
private function mysql_execute_query($sql,$params)
{
$this->stmt = $this->conn->prepare($sql);
$this->stmt->execute($params);
return $this->$stmt;
}
public function find_user_by_provider_uid($provider,$provider_uid)
{
$sql = 'SELECT * FROM users WHERE provider = :provider AND provider_uid = :provider_uid LIMIT 1';
$params = array(
':provider' => $provider,
':provider_uid' => $provider_uid
);
$result = $this->mysql_execute_query($sql,$params);
return $result->fetch();
}
}
首先,是否有一些提示可以更好地构建此代码?或者使用oop的更多功能?
其次,它失败并出现以下错误:
PHP注意:未定义的变量:stmt PHP致命错误:无法访问空属性
这两行都是指返回$ this-> $ stmt;在mysql_execute_query里面
我的预感是它与私人功能有关。但我不知道。
有什么想法吗?
答案 0 :(得分:3)
这里的错误:
return $this->$stmt;
但应该是:
return $this->stmt;