PHP PDO 获取对象

标签 php pdo

我试图弄清楚如何从 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_CLASSFETCH_INTO 一起使用,因为没有任何方法可以传递类名/实例。

  • PDOStatement::fetchObject
    一种执行 FETCH_CLASSFETCH_INTO 的方法,包括传递构造函数参数。没有参数是 FETCH_OBJ 的简写。

  • PDOStatement::setFetchMode
    一种设置默认获取模式的方法,以便可以在没有参数的情况下调用 PDOStatment::fetch


这是我想出的最好办法。我希望它能帮助其他人(我需要 fetchObject 方法)

关于PHP PDO 获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12881802/

相关文章:

php - 如何用 PHP SoapClient 调用重载的 SOAP 方法?

php - 通过 PHP 在远程机器上执行命令

php - 尝试使用 PDO 从数据库中回显数据,但它只是空白

php - 在 PDO 中每次准备后是否需要绑定(bind)参数?

PHP PDO 查询为 FLOAT 字段返回不准确的值

php - mysql 与 mysqli。 mysqli 慢吗?

java - 这个 SQL 会导致任何问题吗?

php - file_put_content 如果不存在则创建文件?

php - 在 PHP PDO MYSQL 中插入多行的最佳方法是什么?

php - 使用 LOAD DATA LOCAL INFILE 的 Symfony2 Doctrine PDO MySQL 连接