PDOメモ
PDO (PHP Data Object) のメモ。
データベースへの接続
MySQLの場合
<?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); ?>
SQLiteの場合
<?php $dbh = new PDO('sqlite:test.db3'); ?>
DBへの接続中に何らかのエラーが発生した場合は、PDOExceptionが発生する。
これはtry〜catchで捕捉することができる。
<?php try { $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); foreach($dbh->query('SELECT * from FOO') as $row) { print_r($row); } $dbh = null; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); } ?>
DBへのコネクションは、生成されたPDOオブジェクトの生存期間と同じだけの間持続する。コネクションを明示的に切断するには、PDOオブジェクトにnullを代入する。
<?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); // 何らかの処理 // 処理終了 $dbh = null; ?>
クエリ投入
PDO::query() を呼び出すことによって、単一のSQL文を実行し、その結果がPDOStatementオブジェクトとして返される。
<?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); foreach ($conn->query('SELECT name, colour, calories FROM fruit ORDER BY name') as $row) { print $row['NAME'] . "\t"; print $row['COLOUR'] . "\t"; print $row['CALORIES'] . "\n"; } ?>
PDOStatementの主なメソッド
- PDOStatement::fetch([int $fetch_style [, int $cursor_orientation [, int $cursor_offset]]] ): 検索結果の集合から、次の1行を取り出す。取り出される行の形は、オプション引数 $fetch_style により指定される。
- array PDOStatement::fetchAll([int $fetch_style [, int $column_index [, array $ctor_args]]]): 検索結果の集合を配列として取得する。配列の要素の形は、オプション引数 $fetch_style により指定される。
$fetch_style の取りうる主な値は以下の通り。