【发布时间】:2013-10-21 22:05:45
【问题描述】:
我已经使用 PHP 编程很多年了,但是直到最近才开始使用类进行编程。我有以下 - 基本 - 用户类如下:
<?php
/* The class for constructing any user's information
*/
class User {
protected $userId, $email, $userGroup;
protected function getEmail() {
return $this->email;
}
protected function getUserId() {
return $this->userId;
}
protected function getUserGroup() {
return $this->userId;
}
public function __construct($userId='') {
if($userId) {
$select = mysql_query("SELECT userId, email, user_group FROM user WHERE userId = '$userId'");
while($user==mysql_fetch_array($select)) {
$this->email = $user[email];
$this->userId = $userId;
$this->userGroup = $user[user_group];
}
}
}
}?>
所以我知道我可以执行以下操作
<?php
$user = new User($userId);
echo $user->getEmail();
?>
显示给定 userId 的用户电子邮件地址。我想知道的是,什么是最好的方式——使用 OOP——来显示,比如说,40 个用户的电子邮件。显然创建 40 个用户对象会很愚蠢,因为那是 40 个 SQL 查询。在给定各种参数执行 SQL 之后,您是否会简单地创建一个用于返回多个用户数组的“用户”类?
即
<?php
$getUsers = new Users('Tom');
// create 'Users' object where name is 'Tom'
print_r($users);
// prints the returned array of users?
?>
感谢您的帮助。希望这很清楚。
【问题讨论】:
-
$userID通常来自哪里?如果它来自外部源,则很容易发生 SQL 注入。请切换到准备好的语句以防止这种情况发生。顺便说一句,mysql_*函数已弃用。 -
嗨马塞尔。我将在稍后阶段为我的 SQL 添加安全功能——这只是一个基本的早期代码,同时我在脑海中清理了我最初的问题。感谢您指出 mysql_* - 我不知道这一点。
-
@Tom :查看PDO。使用 PDO,您可以将记录集转换为 ex 数组。用户。这样你只需要 1 个 SQL 就可以得到 40 个用户作为回报