我一直在轉換一些更基本的腳本,因此他們開始使用PDO,而我似乎無法讓我的靜態身份驗證方法正常工作。不過,我已經得到它與靜態工作。使用pdo的靜態身份驗證方法
繼承人的培訓相關的代碼與非靜態身份驗證方法:
private $dbh;
public function __construct()
{
$this->dbh = new PDO("mysql:host=localhost;dbname=carmen", 'root', '');
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public function authenticate($username="", $password="")
{
$sql = "SELECT * FROM user ";
$sql .= "WHERE username = :username ";
$sql .= "AND pass = :password ";
$sql .= "LIMIT 1";
$stmt = $this->dbh->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return !empty($result) ? true : false;
}
我嘗試在一個解決方案通常試圖申報mehthod靜態時遇到的SQL語句後的第一行的問題。我猜測它必須處理在課程開始時聲明爲private的$ dbh。