我对我遇到的这个问题感到非常困惑。我试图从我的数据库中获取信息,但它只能部分起作用。我的 user.php 文件中的 User 类中有一个名为“authenticate”的函数,该函数扩展了 DatabaseObject。
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
}
}
为了安全起见,省略了电子邮件地址和密码,但我不明白为什么 fname 和 lname 都为 NULL。表中有信息(这是我的名字),因为我可以通过 Navicat 访问该表。这两个字段都是 varchar 字段。
有人能给我指出正确的方向吗?
谢谢。
最佳答案
改变
$sql = "SELECT * FROM ".static::$table_name;
至
$sql = "SELECT * FROM ".self::$table_name;
另外,
$result_array = static::find_by_sql($sql);
至
$result_array = self::find_by_sql($sql);
您需要使用单词self而不是静态
关于php - 使用 PHP OOP 从数据库中检索 mysql 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27127461/