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文の中身を変えるだけ
以上 これをまとめたもの。