php - 使用 PHP OOP 从数据库中检索 mysql 信息

标签 php mysql oop

我对我遇到的这个问题感到非常困惑。我试图从我的数据库中获取信息,但它只能部分起作用。我的 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/

相关文章:

mysql - 你能在 JSON 数据中做一个查询,比如 mysql 查询吗

design-patterns - 构建大型对象层次结构的模式

php - Laravel whereBetween 在两列中

php - 在php中上传大文件时出现内部服务器错误

python - 如果在更新之前进行插入,是否需要提交代码?

php - 为什么 pdo 不适用于具有空格字符的查询?

java - 如何实现通用接口(interface)列表

ios - 允许用户创建表单的应用程序

使用 SSL 的 PHP Mysql 连接无法正常工作 PDO

php - 检查单个 mysql 表行并仅对它们应用一个函数