我有以下select语句,我正在构建一个用户对象:
$stmt = $conn->prepare("SELECT user.User_ID, user.User_Name
FROM user");
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_CLASS| PDO::FETCH_PROPS_LATE,'User');
我在单独的文件中包含以下类,包括 - require" User.php":
class User
{
private $User_ID;
private $User_Name;
public function __construct($User_ID, $User_Name)
{
$this->User_ID = $User_ID;
$this->User_Name =$User_Name;
}
我收到以下警告和通知 -
Warning: Missing argument 1 for User::__construct()
Notice: Undefined variable: User_ID
它工作正常,但我在整理代码时打开了警告等。
我在这里看过其他问题,但解决方案似乎没有帮助,并认为一双新眼睛可以提供帮助。我的想法是我应该在setFetchMode()中传递一个数组,因为文档说明但仍然似乎导致问题。
在PDO中创建类的正确方法是什么?
答案 0 :(得分:1)
如果使用User构造函数的参数,则需要使用setFetchMode
中的第三个参数public bool PDOStatement :: setFetchMode(int $ PDO :: FETCH_CLASS, string $ classname,array $ ctorargs)
在你的情况下
$stmt->setFetchMode(PDO::FETCH_CLASS| PDO::FETCH_PROPS_LATE,'User',
array('User_ID','User_name'));
或只提供构造函数的默认值。
请参阅the reference。