簡體   English   中英

PHP PDO獲取對象

[英]PHP PDO fetching into objects

我試圖弄清楚如何從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;
}

這是我設法弄清楚的:

常量

  • 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方法)

准備好語句后,將PDOStatement :: setFetchMode與PDO :: FETCH_CLASS一起使用:

$stmt = $pdo->query('SELECT col1, col2 FROM table');
$stmt->setFetchMode(\PDO::FETCH_CLASS, 'MyRow');
$obj = $stmt->fetch();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM