結果セットをオブジェクトにセットすると、PHPプログラム内で取得したデータを扱いやすくなります。データをオブジェクトとして取得するには次の方法が用意されています。
フェッチスタイルに「FETCH_CLASS」を指定して取得すると、指定したクラスのオブジェクトにデータを格納して取得することができます。このフェッチスタイルを使う前に、「setFetchMode」メソッドを使って、マッピングするクラスを指定します。
クラス名 | PDOStatement |
---|---|
メソッド名 | setFetchMode |
概要 | フェッチモードを設定する |
パラメーターリスト | |
パラメター名 | 説明 |
int $mode | フェッチモード。PDO::FETCH_XXXXの一つ |
string $classname | クラス名 |
array $ctorargs | コンストラクターの引数 |
返り値 | |
bool | 成功したらTRUE、失敗したらFALSEを返す |
○ ファイル
行を格納するためのクラスを作成しましょう。次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | User.php |
○ プログラム
次のようにプログラムを記述してください。
User.php
○ ファイル
「FetchBoundTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | FetchClassTest.php |
○ プログラム
次のようにプログラムを記述してください。
FetchClassTest.php
○ 実行結果
○ 解説
28行目で、フェッチモードを設定しています。パラメーターにクラス名を渡すことで、クラスでフェッチするときにデータをセットしたオブジェクトが生成されます。
31行目で実際にフェッチしています。32行目で出力される内容を確認すると、オブジェクトが生成され、各プロパティーに各列のデータがセットされていることを確認できます。
PDOStatementクラスの「fetchObject」メソッドでクラス名を指定して呼び出すと、そのクラスのオブジェクトにデータを格納して取得することができます。
クラス名 | PDOStatement |
---|---|
メソッド名 | fetchObject |
概要 | フェッチモードを設定する |
パラメーターリスト | |
パラメター名 | 説明 |
string $class_name | 作成するクラス名 |
返り値 | |
mixed | 列名に対応するプロパティーにデータを格納したオブジェクトを返す。失敗したらFALSEを返す |
○ ファイル
「FetchClassTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | FetchObjectTest.php |
○ プログラム
次のようにプログラムを記述してください。
FetchObjectTest.php
○ 実行結果
○ 解説
28行目でfetchObjectメソッドを、Userクラス名を指定して呼び出しています。29行目で出力される結果を見ると、Userクラスのオブジェクトとして各列名のプロパティーにデータがセットされていることを確認できます。