php - setFetchMode PDO::FETCH_CLASS PDO::FETCH_PROPS_LATE 返回未定义
问题描述
我正在尝试使用:
$stmt>setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE,static::MODEL_CLASS);
$customer = $stmt->fetch();`
将返回的数据绑定到与 static::MODEL_CLASS 关联的构造函数中。即使我只是输入实际的类名“客户”,我也会在这里得到错误。在代码有机会获取之前,它会出错。如果没有 setFetchMode,我会取回数据。数据库和模型以完全相同的顺序具有完全相同的属性。有谁知道是怎么回事???
错误:
(!)致命错误:未捕获的 ArgumentCountError:函数 Klant::__construct() 的参数太少,通过了 0,并且在 D:\Documents\Stack\Dropbox\Dropbox\Deltion\working\Hoofdstuk 6\datamapperdesignpattern.php 中预期正好 8 个第 14 行
class Klant {
public $ID;
public $voornaam;
public $achternaam;
public $adres;
public $postcode;
public $woonplaats;
public $email;
public $password;
public function __construct($ID, $voornaam, $achternaam, $adres, $postcode, $woonplaats, $email, $password) {
$this->ID = $ID;
$this->voornaam = $voornaam;
$this->achternaam = $achternaam;
$this->adres = $adres;
$this->postcode = $postcode;
$this->woonplaats = $woonplaats;
$this->email = $email;
$this->password = $password;
}
function read($ID)
{
$stmt = $this->pdo->prepare("SELECT * FROM customer WHERE ID = ?");
try {
$stmt->bindParam(1, $ID);
$stmt->execute();
}
catch(PDOException $e) {
echo $e;
}
$stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE,static::MODEL_CLASS);
$customer = $stmt->fetch();
return $customer;
}
^ 完整代码供参考。构造函数是正常的public function __construct()
重要的?注意:这个完全相同的代码和这个完全相同的数据库可以与其他人一起使用。我有一个全新的 Xampp 安装。PHP版本是7.2.11。
解决方案
PDO 不会向您的构造函数发送参数。相反,您可以创建对象,然后用于PDO::FETCH_INTO
保存到已经存在的对象中。
<?php
function read($ID)
{
$stmt = $this->pdo->prepare("SELECT * FROM customer WHERE ID = ?");
try {
$stmt->bindParam(1, $ID);
$stmt->execute();
}
catch(PDOException $e) {
echo $e;
}
$customer = new Klant(...pass your desired arguments...);
$stmt->setFetchMode(PDO::FETCH_INTO, $customer);
$stmt->fetch();
return $customer;
}
推荐阅读
- c - C语言中“%c”和“%s”的区别
- node.js - 每次变量更改 DISOCRD.JS 时,Nodejs 都会更改机器人的昵称
- ms-access - 在 Access 中检查大型链接数据库
- python - 如何配置 pytesseract 以支持 Windows 10 中非英语语言的文本检测?
- python - numpy unique() 返回 '<' 在 float / str 实例之间不支持错误 - 为什么?
- c++ - 如何彼此相邻打印倒置的半星金字塔图案?
- php - Nginx 代理 Apache2 php ERR_CONNECTION_RESET
- python - 在 Cython 中添加双打时精度损失
- azure-active-directory - 使用 Microsoft Graph 列出不同 Active Directory 的用户
- asp.net-core - 在剃刀页面中传递对象的最简单方法