我试图弄清楚如何从PDO获取到我的自定义类,以及一般的PDO到对象API,并且发现缺乏体面的文档令人沮丧。大多数选项仅作为选项记录,而示例都使用提取到数组中 那么,有人可以解释这些是如何使用的:
如果可能的话,我想要一般性地解释每个函数/常量如何用于获取对象,或者差异是什么,以及如何获取我的类的具体答案,例如:成:
class MyRow {
public $col1, $col2;
}
答案 0 :(得分:9)
这是我设法弄清楚的:
PDO :: FETCH_OBJ
用于获取未命名(“匿名”)对象的新实例
PDO :: FETCH_CLASS
用于获取现有类的新实例(列名应与现有属性匹配,或__set
应用于接受所有属性)。在设置属性后将调用类的构造函数。
PDO :: FETCH_CLASSTYPE
与FETCH_CLASS
(按位OR)一起使用时,创建实例的类的名称位于第一列,而不是提供给函数。
PDO :: FETCH_INTO
与FETCH_CLASS
使用相同类型的类(必须将所有列作为属性名称处理),但更新现有对象而不是创建新对象。
PDO :: FETCH_LAZY
我不知道这是做什么的。
PDOStatement对象::取
常规的get-a-row命令。我不知道如何在FETCH_CLASS
或FETCH_INTO
中使用它,因为没有办法传递类名/实例。
PDOStatement对象:: fetchObject
一种执行FETCH_CLASS
或FETCH_INTO
的方法,包括传递构造函数args。没有args是FETCH_OBJ
的缩写。
PDOStatement对象::调用setFetchMode
一种设置默认提取模式的方法,以便可以在没有args的情况下调用PDOStatment::fetch
。
这是我设法弄清楚的最好的。我希望它可以帮助其他人(我需要fetchObject
方法)
答案 1 :(得分:0)
准备好声明后,将PDOStatement :: setFetchMode与PDO :: FETCH_CLASS一起使用:
$stmt = $pdo->query('SELECT col1, col2 FROM table');
$stmt->setFetchMode(\PDO::FETCH_CLASS, 'MyRow');
$obj = $stmt->fetch();