<?php
class User {
// properties
public $table = 'users';
public $id;
public $username ;
public $password ;
public $first_name ;
public $last_name ;
Above(id,username ...,last_name)是MySQL数据库中 users 表的列。使用id从用户表中获取(我正在使用PDO)特定记录后,如何动态地将所有记录分配到各自的属性(一个函数可以帮助搜索所有可用属性并搜索生成的关联数组中的那些属性,然后将这些特定值分配给它们各自的属性)?
// methods
public function set_user($id){
global $dbh;
// sql
$sql = "SELECT * FROM $this->table WHERE id = {$id}";
// return result array
$result_arr = $dbh->pdo_query_fetch($sql);
}
$result_arr
包含id,username,password,first_name和last_name的关联数组。
注意:此处pdo_query_fetch()
是用户定义的函数。
答案 0 :(得分:4)
您正在使用PDO,它与PDO::FETCH_INTO
:
PDO::query ( string $statement , int $PDO::FETCH_INTO , object $object )
请参阅PDO::queryDocs。
可能是你的“自己的”数据库类“拥有”你,因为你开始过早地封装了东西。这可能需要您向$dbh
类添加一个额外的函数和/或您可能想要开始重构。
答案 1 :(得分:2)
我建议在您的用户类中添加一个方法:
public function Assign( $vars = array( ) )
{
if( is_object( $vars )) {
$this->Assign( get_object_vars( $vars ));
return;
}
foreach ( $vars as $key => $value )
if ( property_exists( $this, $key ) )
$this->$key = $value;
}
使用此方法,您可以将属性从另一个对象或数组设置为现有对象。
你可以像这样使用它:
myUser = new User();
myUser->Assign($result_arr);
答案 2 :(得分:1)
您可以使用get_object_vars
$properties = get_object_vars($this);
foreach ($properties as $property => $property_value) {
if (isset($result_arr[$property]))
$this->$property = $result_arr[$property];
}
答案 3 :(得分:1)