【发布时间】:2012-01-18 02:31:51
【问题描述】:
我正在尝试将从 Datamanager 对象中的 PDO 收集的值传递给 User 对象。
- 最初调用用户对象,请求检索具有 ID 的用户。
- 用户在构造中创建与数据管理器的连接。
- datamanager 构造调用 PDO 连接。
- 运行用户选择会创建要在数据库上执行的查询。
- 然后将查询传递给处理查询并返回结果的数据管理器。
- 应将此结果传递/设置给用户对象。
我不确定是第 5 步还是第 6 步错了。
class Datamanager {
public function __construct() {
try {
$this->dbh = new PDO("mysql:host=$this->hostName;dbname=$this->dbName", $this->dbUser, $this->dbPassword);
} catch(PDOException $e) {
echo $e->getMessage();
}
}
public function runQuery($query, $obj){
try {
$STH = $this->dbh->query($query);
$STH->setFetchMode(PDO::FETCH_INTO, $obj);
} catch(PDOException $e) {
echo $e->getMessage();
}
return($obj);
}
class User {
public $user_id;
public $user_name;
public $user_password;
public $session_id;
private $dbc;
public function __construct() {
$this->dbc = new Datamanager();
}
function selectUser ($userID, $obj) {
$query = 'SELECT user_id, user_name, user_password, session_id FROM users';
$results = $this->dbc->runQuery($query, $this);
}
$userID = "1";
$test = new User;
$test->selectUser($userID, $test);
我运行用户的初始设置,然后尝试使用在数据管理器中检索到的值加载它。我知道 PDO 本身就是一个对象,但我仍在尝试创建一个通用交互,因为此代码将被扩展以允许更多用户对象访问数据库。
【问题讨论】: