【发布时间】:2019-06-02 14:48:42
【问题描述】:
我想将数组值存储为对象属性。我正在关注 mysqli 的示例,但我想改用 PDO。
我有一个用户类:
class User {
public $id;
public $username;
public $password;
public $first_name;
public $last_name;
public static function find_all_users(){
global $database;
$result_set = $database->query($sql);
return $result_set;
} //end method
} //end User class
我已使用以下数据库类连接到我的数据库。 注意:常量 DB_SERVER 等在别处定义并包含在文件中
class Database{
public $connection;
function __construct(){
$this->open_db_connection();
}//end of constructor
public function open_db_connection(){
try{
$this->connection = new PDO('mysql:host='. DB_SERVER .';dbname='. DB_NAME, DB_USER, DB_PASSWORD);
$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo 'Server Error: ' . $e->getCode(;
}//end catch block
}//end of method
public function query($sql){
$stmt = $this->connection->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
} //end query method
$database = new Database();
我想从 User 类创建一个对象并使用该类的属性来访问我的数据。
$user = new User();
$user->id = $result_set['id'];
$user->username = $result_set['username'];
$user->password = $result_set['password'];
$user->first_name = $result_set['first_name'];
$user->last_name = $result_set['last_name'];
echo $user->id;
在 mysqli 中,将通过以下方式完成:
public static function find_all_users(){
global $database;
$result_set = $database->query($sql);
mysqli_fetch_array($result_set);
return $result_set;
} //end method
我得到的错误是 “未定义的索引:id” “未定义的索引:用户名” “未定义索引:密码” “未定义的索引:first_name” "未定义索引:姓氏"
我认为我的错误来自 fetchAll(PDO::FETCH_ASSOC)。我应该从我的 echo 语句中得到一个值。 echo $user->id;
有什么更好的 fetch 方法与 PDO 的 mysqli_fetch_array 类似?
下面是我 print_r $result_set 的时候:
【问题讨论】:
-
你还没有问过问题。有什么问题?
-
...即使在最后一次编辑之后,您也没有澄清情况。请说出确切的问题、原因以及您想要得到什么。
-
您正在建立 PDO 连接,但随后拨打了
mysqli_fetch_array()电话,这将无法正常工作。find_all_users应该只返回来自$database->query($sql)的值。虽然$sql似乎也没有在任何地方定义... -
如果你想要一个对象为什么不使用
PDO::FETCH_OBJ
标签: php oop mysqli pdo properties