PDO

このサイトいい感じ

PDOでMySQLに接続からINSERTやSELEC、UPDATEからDELETE、SUM、COUNTやテーブル作成など|LABO IWASAKI

PDOとは…データアクセス抽象化レイヤーと言われ、アプリケーションとDBMS(データベース管理システム)の間に入ってDBMSの違いを意識せずにアプリケーションを作成するもの

 

PDOクラス

$dsn = 'mysql:dbname=testdb;host=localhost';
$user = 'dbuser';
$password = 'dbpass';

try{
    $dbh = new PDO($dsn, $user, $password);
}catch (PDOException $e){
    echo $e->getMessage();
exit; }

 

PDOクラスはオブジェクトの作成時に、データベースへの接続に失敗した場合"PDOException"という例外を投げる 

PHPスクリプトが終了すればデータベースへの接続は閉じられるが、明示的に閉じる場合には作成したPDOクラスのオブジェクトに"NULL"を代入する

$dbh = null;

 

PDO::query

1回だけ使用するようなSQL文をデータベースへ送信するにはPDOクラスで用意されている"query"メソッドを使います。

$sql = 'select id, name from shouhin';
$stmt = $dbh->query($sql);

PDOでSQLを実行すると、PDOStatementのインスタンスという形で結果が返ってくる

 

PDOStatement::fetch  <-これがいまいち使いこなせてないかも

PDOStatementクラスのオブジェクトから実際の値を取り出すにはPDOStatementクラスで用意されている"fetch"メソッドを使います。

$sql = 'select id, name from shouhin';
$stmt = $dbh->query($sql);

$result = $stmt->fetch(PDO::FETCH_ASSOC);
print($result[0]);
print($result[1]);

PDO::FETCH_ASSOC: は、結果セットに 返された際のカラム名で添字を付けた配列を返します。

PDOStatement::fetch - 結果セットから次の行を取得する

 

PDO::prepare

prepareメソッドはqueryメソッドと似たような機能を提供しますが、SQL文の基本部分が同じで値だけ異なるような場合(例えば同じテーブルに値だけ変えて何回もデータを挿入するような場合です)に効率よく行える機能を提供してくれます。

$sql = 'select id, name from shouhin where id > ? AND id < ?';
$stmt = $dbh->prepare($sql);
$sql = 'select id, name from shouhin where id > :kagen AND id < :jyougen';
$stmt = $dbh->prepare($sql);

?かパラメーターで指定する

PDO::execute

prepareメソッド自体はデータベースに送信しようとするSQL文の準備をしているだけです。実際にSQL文をデータベースに送るにはPDOStatementクラスで用意されている「execute」メソッドを使います。

 $stmt->execute(array(1, 5));

 

 

INSERT,UPDATE,DELETE

$dbh->prepare($sql);

それぞれセットするSQL文の中身を変えるだけ

 

以上 これをまとめたもの。

PDOの利用 - PHP入門