我试图弄清楚如何从 PDO 获取到我的自定义类,以及一般的 PDO-to-object API,并且发现缺乏像样的文档令人沮丧。大多数选项仅记录为一个选项,而所有示例都使用获取数组。
那么,有人可以解释一下这些是如何使用的吗:
- PDO::FETCH_OBJ
- PDO::FETCH_CLASS
- PDO::FETCH_CLASSTYPE
- PDO::FETCH_INTO
- PDO::FETCH_LAZY
- PDOStatement::fetch
- PDOStatement::fetchObject
- PDOStatement::setFetchMode
如果可能的话,我想要一个一般性的解释如何使用每个函数/常量来获取对象,或者有什么区别,以及如何获取到我的类中的具体答案,例如进入:
class MyRow {
public $col1, $col2;
}
最佳答案
这是我设法弄清楚的:
常量
PDO::FETCH_OBJ
用于获取未命名(“匿名”)对象的新实例PDO::FETCH_CLASS
用于获取现有类的新实例(列名应与现有属性匹配,或者__set
应用于接受所有属性)。设置属性后将调用类的构造函数。PDO::FETCH_CLASSTYPE
与FETCH_CLASS
(按位或)一起使用,要为其创建实例的类的名称位于第一列,而不是提供给函数。PDO::FETCH_INTO
用于与FETCH_CLASS
相同类型的类(必须将所有列作为属性名称处理),但更新现有对象而不是创建新对象。PDO::FETCH_LAZY
我不知道这是做什么的。
函数
PDOStatement::fetch
常规的获取行命令。我不知道如何将它与FETCH_CLASS
或FETCH_INTO
一起使用,因为没有任何方法可以传递类名/实例。PDOStatement::fetchObject
一种执行FETCH_CLASS
或FETCH_INTO
的方法,包括传递构造函数参数。没有参数是FETCH_OBJ
的简写。PDOStatement::setFetchMode
一种设置默认获取模式的方法,以便可以在没有参数的情况下调用PDOStatment::fetch
。
这是我想出的最好办法。我希望它能帮助其他人(我需要 fetchObject
方法)
关于PHP PDO 获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12881802/