|
||||||||||||||
| 1 2 次のページ | ||||||||||||||
| query()メソッド | ||||||||||||||
|
前回に引き続きSQLiteDatabaseの拡張について紹介します。 SQLiteResultオブジェクトを作成するこのメソッドはリスト4にあります。getCount()メソッドはバッファーされたクエリの結果セットに対してのみ使用することができます。この結果セットはforeachループで使用されます。SQLiteResultはSPLに含まれているインターフェース、Iteratorを実装しているのだと思うかもしれませんが、結果セットはリフレクションを利用しておりIteratorを継承しているわけではありません。 しかし、すべてのIteratorのメソッドであるrewind()、next()、valid()、current()メソッドは実装されています。これらのメソッドを直接使用することもできますが、本来の目的はSQLiteの結果セットをforeachのループの中で配列と同じように使用することにあります。 また、rewind()メソッドはバッファーされていないクエリの結果セットでは使用できないので注意が必要です。なお、このメソッドとunbufferedQuery()メソッドだけが結果セットをオブジェクトとして返却します。 |
||||||||||||||
| unbu.eredQuery()メソッド | ||||||||||||||
|
リスト5の例では結果セットをバッファーする必要がありません。ここではsingleQuery()メソッドの方がよいのですが、singleQuery()メソッドでは複数カラムを持つ単一レコードを取得することができないので、バッファーされないクエリでSQLiteDatabase オブジェクトを取得し、fetch()メソッドで最初の行を配列にコピーします。 リスト5
try{
|
||||||||||||||
| arrayQuery()メソッド | ||||||||||||||
|
PHPのWebサイトのドキュメントでは45以上のレコードを取得する場合はこのメソッドを使用するべきでない、という警告がされているので注意しましょう。このメソッドを使用したスクリプトをリスト6に掲載します。 リスト6
//SQLite用の関数
見ての通りですが、このコードではLIMIT句を使用しているので最大で何件のレコードが返却されるのかがわかっています。繰り返しになりますが、このメソッドでも結果セットの作成はスキップされます。 |
||||||||||||||
|
1 2 次のページ |
||||||||||||||
書籍紹介PHPプログラマーズマガジン PHPプログラマーズマガジンは、PDF形式で読者の方にお届けするPHP言語(PHP: Hypertext Processor)専門誌です。 カナダMTA出版のphp|architect誌を日本語に翻訳し、独自の記事を加えて月刊でお届けしています。 発行:アシアル株式会社 価格:1,029円 |
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||


