PDO PHP Fetch Class
我正在学习php中的pdo,以使数据库访问更容易,更高效。我读过的一个关于获取_class的解释是,你的对象的属性是在调用构造函数之前设置的。这是什么意思?任何方向都非常感谢。
我正在学习php中的pdo,以使数据库访问更容易,更高效。我读过的一个关于获取_class的解释是,你的对象的属性是在调用构造函数之前设置的。这是什么意思?任何方向都非常感谢。
这意味着,当使用 PDO 将结果返回到自定义对象时,您需要设置与查询结果键相对应的成员变量。
如:
class User
{
//Predefine Here
public $id;
public $username;
public $password;
public $email;
public $hash;
public function profileLink()
{
return sprintf('<a href="/profile/%s">%s</a>',$this->id,$this->username);
}
}
$result = $sth->fetchAll(PDO::FETCH_CLASS, "User");
foreach($result as $user)
{
echo $user->profileLink();
}
这样,PDO 可以将变量设置为其内部范围之外的对象。
如果你的用户类是这样的:
class User
{
}
则 PDO 将无法从作用域外设置值,因为未定义任何属性。
假设您有这段代码片段
<?php
class Foo {
public $bar;
public function __construct()
{
$this->bar = 1;
}
}
$stmt = $dbh->prepare("SELECT bar FROM foo");
$stmt->setFetchMode(PDO::FETCH_CLASS, 'Foo');
$stmt->execute();
$obj = $stmt->fetch()
?>
$obj的柱线属性将设置为“1”,而不是从数据库中检索到的。
如果您希望将其设置为来自数据库的结果而不是“1”,则可以将读取模式更改为
$stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'Foo');
这会导致在将结果分配给属性之前调用构造函数