// クラス定義
class Post {
var $id;
var $title;
};
// テストプログラム
$dsn = "mysql:host=localhost;dbname=pdo_test";
$username = "pdo_test";
$password = "pdo_test";
try {
$pdo = new PDO($dsn, $username, $password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 失敗したら例外を投げる
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_CLASS, //デフォルトのフェッチモードはクラス
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', //MySQL サーバーへの接続時に実行するコマンド
));
// PDO::fetch()でカレント1件を取得
$id = 1;
$stmt = $pdo->prepare('SELECT* FROM posts WHERE id = :id');
$stmt->bindParam(':id', $id, PDO::PARAM_STR);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Post');
$post = $stmt->fetch(); //クラスのインスタンスを直接取得
print_r($post);
/*
Post Object
(
[id] => 1
[title] => test01
)
*/
// PDO::fetch()を繰り返し呼んでヒット全件を取得
$stmt = $pdo->prepare('SELECT* FROM posts where id > 0');
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Post');
while ($post = $stmt->fetch()){ //クラスのインスタンスを直接取得
print_r($post);
}
/*
Post Object
(
[id] => 1
[title] => test01
)
Post Object
(
[id] => 2
[title] => test02
)
Post Object
(
[id] => 3
[title] => test03
)
Post Object
(
[id] => 4
[title] => test04
)
Post Object
(
[id] => 5
[title] => test05
)
Post Object
(
[id] => 6
[title] => test06
)
*/
// PDO::fetchAll()でヒット全件をインスタンスの配列として取得
$stmt = $pdo->prepare('SELECT* FROM posts where id > 0');
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Post');
$posts = $stmt->fetchAll(); //クラスのインスタンスの配列を取得
print_r($posts);
/*
Array
(
[0] => Post Object
(
[id] => 1
[title] => test01
)
[1] => Post Object
(
[id] => 2
[title] => test02
)
[2] => Post Object
(
[id] => 3
[title] => test03
)
[3] => Post Object
(
[id] => 4
[title] => test04
)
[4] => Post Object
(
[id] => 5
[title] => test05
)
[5] => Post Object
(
[id] => 6
[title] => test06
)
)
*/
// PDO::fetch()でヒット1件だけの場合も配列が返る
$stmt = $pdo->prepare('SELECT* FROM posts where id = 1');
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Post');
$posts = $stmt->fetchAll(); //クラスのインスタンスの配列を取得
print_r($posts);
/*
Array
(
[0] => Post Object
(
[id] => 1
[title] => test01
)
)
*/
} catch (PDOException $e) {
echo 'PDO exception: ' . $e->getMessage();
exit;
}
echo 'Succeeded!';