VIDTAKER.COM

Q&A

PHPのは、PDO::fetch_を* - PHPの答えを


こんにちは、

私はすべてのpdoStatements方法について私はそれを行うことができますフェッチモードを設定したいと思います。
今私の場合のみに適用されるPDOStatementのインスタンスメソッドのフェッチモードを設定するメソッドを発見した。

例:
  1. $connection = new PDO(...);
  2. $sql = "SELECT * FROM table";
  3. $statement = $connection->prepare($sql);
  4. $statement->setFetchMode(PDO::FETCH_ASSOC);
  5. $statement->execute();
  6. $rows = $statement->fetchAll();
これは罰金をPDOStatementのインスタンスに動作します。しかし、私は永久にそれをしたいと思います。

PDOStatementの静的そうです何か::返り値の();法の一種
あるいはPDOインスタンスメソッド:$はPDO -)>返り値の(;

感謝



4 Replies

1)

引用:

もともとguillermobytes投稿プロフィール投稿

これは罰金をPDOStatementのインスタンスに動作します。しかし、私は永久にそれをしたいと思います。

PDOStatementの静的そうです何か::返り値の();法の一種
あるいはPDOインスタンスメソッド:$はPDO -)>返り値の(;

ある)は、静的な返り値の()メソッド (フェッチをなぜ別の必要があることのいずれかのかもしれない、すべてのオブジェクトは、ステートメントのモードです。オブジェクト指向のポイントの視点から、それは、静的モードフェッチを持ってしても意味がない。

PDOクラス )が拡張されたクラスをラッパーやしないのみの契約を、接続DBの持つデータの取得がさ例えば、(行わによるPDOStatement型の実装をただし、書くことができる独自の

2)

笑Dormilich、私はあなたから、この文は、取得ほぼすべての答え:
引用:
オブジェクト指向のポイントの視点から、それは意味をなさない
私は完全にオブジェクト指向の概念または多分あなたは十分に心開いていないを見逃している可能性があります。おそらくそれは最初のオプションは..だしかし、この点を考慮して、私が何かを逃した場合を教えてください:
そこにデフォルトがFETCH_BOTH(と思う)(それはFETCH_ASSOCはとFETCH_NUMのはだモードをフェッチする)。
ポイントは、デフォルトでは、私は時間の99%を使用するため、自分のニーズを満たしていないフェッチモードですFETCH_ASSOCは、そこに私は私のニーズに合わせてデフォルト値を変更したいと思います。
私がもし n指定(変更をn個の変更にフェッチモードになります)それはラッパーにFETCH_ASSOCはすべての(時間私は作成PDOStatementの)をPDOStatementインスタンスの数値を作成。
インスタンスしかしからさえすれば、それを私が変更bootstraperし、時としてはPDOStatement私は必要な他のフェッチモードをに変更私は(FETCH_NUMの)、私はなるだろうだけ1n/100改善されて良い

ので、いつでもそこに値を変更するあらゆる権利を持つインスタンスは、インスタンス上にある複製されるデフォルト値は、私は静的と思うプロパティは、 デフォルトのことするには、希望する意味を、このようなことができます必要に応じて、プログラマがプロパティを変更するには:
  1. class pdoStatement
  2. {
  3.     private static $_defaultFetchMode = pdo::FETCH_BOTH;
  4.  
  5.     private $_fetchMode;
  6.  
  7.     public function __construct()
  8.     {
  9.          //set the instance fetchMode from default fetch mode
  10.          $this->setFetchMode(self::$_defaultFetchMode);
  11.     }
  12.  
  13.     public function setFetchMode($fetchMode)
  14.     {
  15.         //ensure fetch mode is supported
  16.         self::isSupportedFetchMode($fetchMode);
  17.         //fetch mode supported
  18.         $this->_fetchMode = $fetchMode;  
  19.     }
  20.  
  21.     static public function setDefaultFetchMode($fetchMode)
  22.     {
  23.         //ensure fetch mode is supported
  24.         self::isSupportedFetchMode($fetchMode);
  25.         //fetch mode supported
  26.         self::$_defaultFetchMode = $fetchMode;  
  27.     }
  28.  
  29.     static public function isSupportedFetchMode($fetchMode)
  30.     {
  31.         switch ($fetchMode) {
  32.             case FETCH_BOTH;
  33.             break;
  34.             case FETCH_ASSOC;
  35.             break;
  36.             case FETCH_NUM;
  37.             break;
  38.             case etc.
  39.             break
  40.             default;
  41.                 throw new pdoStatement_Exception('Error : fetch mode not supported');
  42.             break;
  43.         }
  44.     }
  45. }
それはラッパーを書くためのリソースと時間を節約できます。


私たちも、PDOはクラスから取得モードを設定する2番目のオプションを一与えた書くことができます。これは、PDOのクラスは、pdoStatmentsを作成するもので、意味をなさないようだが、それはPDOStatementを呼び出すことができますので、::返り値の()をPDOStatementを返す前に。 (私は習慣のコードは、それをすると、私は何を意味)を取得

いくつかの発言をした場合は、私のポイントのすべての間違いを見れば、とにかく私は、あなたの答えを感謝し、私は満足していると思います。

3)

これは明らかに有用であることが特徴です。私はパッチを書くよとPDOの人にそれを提出し、彼らの言うこと参照してください。

4)

マルクスいいわね!それは/拒否aprovedれている場合私まで、ついていく。