PHP - 使用PDO构造一个类 - 警告:缺少参数

时间:2015-04-22 17:38:54

标签: php mysql object pdo

我有以下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中创建类的正确方法是什么?

1 个答案:

答案 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