我對這個問題非常困惑。我試圖從我的數據庫獲取信息,但它只是部分工作。我有一個名爲authenticate的函數,在擴展DatabaseObject的User類的user.php文件中。使用PHP OOP從數據庫檢索信息
class User extends DatabaseObject{
protected static $table_name = "sellatext_users";
public $id;
public $email;
public $password;
public $fname;
public $lname;
public static function authenticate($email="", $password="") {
global $database;
$email = $database->escape_value($email);
$password = $database->escape_value($password);
$sql = "SELECT * FROM ".static::$table_name;
$sql .= " WHERE email = '{$email}' ";
$sql .= "AND password = '{$password}' ";
$sql .= "LIMIT 1";
$result_array = static::find_by_sql($sql);
var_dump($result_array);
die;
return !empty($result_array) ? array_shift($result_array) : false;
}
這工作得很好,如果我的var_dump($ result_array)我得到
array(1) {
[0]=> object(User)#5 (5)
{
["id"]=> string(1) "3"
["email"]=> string(18) "email_address"
["password"]=> string(8) "XXXXXXXX"
["fname"]=> NULL
["lname"]=> NULL
}
}
EMAIL_ADDRESS和密碼,省略了安全性,但我想不通爲什麼我收到NULL兩個fname和lname。表中有信息(這是我的名字),因爲我可以通過Navicat訪問表。這兩個字段都是varchar字段。
任何人都可以指出我正確的方向嗎?
謝謝。
在類方法中使用'gloabl'是很差的編碼,它完全破壞了類的封裝。正如你擴展了DatabaseObject類,你不能使用'$ this-> database - > ....' – RiggsFolly 2014-11-25 13:03:28
我的DatabaseObject在一個不同的文件中擴展了一個名爲Database的類,如果不使用全局的話(我從中學到的教程展示了它那樣)我該如何獲得數據庫信息? – Jim 2014-11-25 13:30:22
如果每個類'擴展'前一個,那麼使用'$ this-> a_property'將查看$ a_property的當前對象,如果沒有找到,將查找該屬性的擴展類層次結構直到找到它。只要每個新類都擴展了子類即前一個,那麼這些類是否在不同的物理文件中定義並不重要。如果你的教程建議在類結構中使用'global',那麼找一個更好的教程。 – RiggsFolly 2014-11-25 13:37:46