8

PDOからカスタムクラス、一般的にはPDOからオブジェクトへの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;
}
4

2 に答える 2

11

これが私がなんとか理解したことです:

定数

  • PDO :: FETCH_OBJ
    は、名前のない(「匿名」)オブジェクトの新しいインスタンスにフェッチするために使用されます

  • PDO :: FETCH_CLASS
    は、既存のクラスの新しいインスタンスにフェッチするために使用されます(列名は、既存のプロパティと一致するか、__setすべてのプロパティを受け入れるために使用される必要があります)。クラスのコンストラクターは、プロパティが設定された後に呼び出されます。

  • PDO :: FETCH_CLASSTYPE (ビット単位のOR)
    とともに使用される、インスタンスを作成するクラスの名前は、関数に提供されるのではなく、最初の列にあります。FETCH_CLASS

  • PDO :: FETCH_INTO
    と同じタイプのクラスで使用されFETCH_CLASSます(すべての列をプロパティ名として処理する必要があります)が、新しいオブジェクトを作成するのではなく、既存のオブジェクトを更新します。

  • PDO::FETCH_LAZY
    これが何をするのかわかりません。

関数

  • PDOStatement::fetch
    通常のget-a-rowコマンド。クラス名/インスタンスを渡す方法がないため、FETCH_CLASSまたはこれを使用する方法がわかりません。FETCH_INTO

  • PDOStatement :: fetchObjectコンストラクター引数の受け渡しを含む、または
    を実行する方法。引数なしは、の省略形です。FETCH_CLASSFETCH_INTOFETCH_OBJ

  • PDOStatement :: setFetchMode
    デフォルトのフェッチモードを設定する方法。これにより、PDOStatment::fetch引数なしで呼び出すことができます。


それは私が理解できた最高のものです。私はそれが他の誰かに役立つことを願っています(私はfetchObject方法が必要でした)

于 2012-10-14T13:34:31.517 に答える
1

ステートメントを準備した後、PDO Statement::setFetchModeをPDO::FETCH_CLASS:とともに使用します。

$stmt = $pdo->query('SELECT col1, col2 FROM table');
$stmt->setFetchMode(\PDO::FETCH_CLASS, 'MyRow');
$obj = $stmt->fetch();
于 2012-10-14T12:01:36.983 に答える