PHP PDO获取对象

时间:2012-10-14 11:31:13

标签: php pdo

我试图弄清楚如何从PDO获取到我的自定义类,以及一般的PDO到对象API,并且发现缺乏体面的文档令人沮丧。大多数选项仅作为选项记录,而示例都使用提取到数组中 那么,有人可以解释这些是如何使用的:

  • PDO :: FETCH_OBJ
  • PDO :: FETCH_CLASS
  • PDO :: FETCH_CLASSTYPE
  • PDO :: FETCH_INTO
  • PDO :: FETCH_LAZY
  • PDOStatement对象::取
  • PDOStatement对象:: fetchObject
  • PDOStatement对象::调用setFetchMode

如果可能的话,我想要一般性地解释每个函数/常量如何用于获取对象,或者差异是什么,以及如何获取我的类的具体答案,例如:成:

class MyRow {
  public $col1, $col2;
}

2 个答案:

答案 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_CLASSFETCH_INTO中使用它,因为没有办法传递类名/实例。

  • PDOStatement对象:: fetchObject
    一种执行FETCH_CLASSFETCH_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();