如何在类中从我的数据库获取数据?
我的数据库中有一个users
表,我想以面向对象的方式访问该数据。这意味着我不想一直在我的代码中编写查询,而是想通过 $Users->getUserById(2)->getName();
但问题是我无法在这些类中建立数据库连接。
$pdo = new PDO("mysql:host=ipofdatabase;dbname=nameofdatabase", "username", "password", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
class Users {
public function usersList() {
$db_users = $pdo->query("SELECT id, username, mail FROM users");
$users = array();
foreach ($db_users as $u) {
$users[] = array(
'id' => $u['id'],
'username' => $u['username'],
'mail' => $u['mail']
);
}
}
public function getUserById($id) {
return new User($id);
}
}
我希望 $Users->usersList()
输出一个包含所有数据的数组,但我却收到一个错误,指出第 3 行中的变量 $pdo 未定义。
Notice: Undefined variable: pdo in C:\apache\docs\Users.php on line 6
我应该在每个类中建立数据库连接吗?这不会影响性能吗?
最佳答案
您需要创建一个__construct
函数来访问PDO。您在类的外部 声明$pdo
变量。该类可以访问它内部的内容。
class Foo
{
protected $pdo; # here we define PDO as part of the class scope.
public function __construct()
{
# we then assign $pdo to be a PDO instance
$this->pdo = new \PDO('mysql:hostname=localhost;dbname=foobar', 'user', 'pass');
}
public function doSomething()
{
# we then use the $pdo var using $this->pdo
$this->pdo->prepare('SELECT * FROM `table`');
# etc.
}
}
关于php - 从 PHP 类中的数据库中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53944934/