初学者の独り言メモです
PDO について DB への接続・切断、SQL を発行する部分を分けたり、例外処理、プレペアードステートメント、DAO などぼんやり理解したものの本や記事によって異なる関数が使われているのを多く見かけました。プレースホルダの書き方の違いや関数の記述の違い、関数をどう使い分けるのかを知ろうというのが目的です。書き起こしながら理解を深めようと随時加筆・修正していきます。ここで使用するデータベースは MySQL です。 JDBC ドライバ接続についても理解しないと。
データベースに接続するための抽象化レイヤーが PHP に用意されています。「PHP Data Objects(PDO)」が用意されています。今回「PDO クラス」を使います。
参考:PDO:PHP - Manual
抽象レイヤーとは何かは後回し
PDO クラス のインスタンスを生成してデータベースに接続しますが、データベース接続に必要な情報は以下です。
- データベースサーバーの名前(ホスト名)
- データベースの名前(スキーマ名)
- データベースのユーザー名
- データベースのパスワード
$変数 = new PDO(
DB設定(データベースの種類;ホスト名;文字コード),
ユーザー名,
パスワード
);
以下、$pdo オブジェクトを使ってデータベースとデータをやり取りします。
<?php
$dsn = "mysql:dbname=xxx;host=xxx;charset=xxx";
$user = "root";
$password = "xxx";
$pdo = new PDO($dsn, $user, $password);
データベースへの接続
WordPress でのデータベース接続に似ているなぁ。データベースへの接続には決められたルールがあるんだね。データベースサーバーをホテルの一室と考えると、どのホテル(ホスト名)のどの部屋(スキーマ名)でなんて名前(ユーザー名)で予約して指定の鍵(パスワード)で入室できる感じかな。
データ取得関連の関数
他にもありますが、見かけた関数だけを抜き出しました。
-
prepare() …SQLを準備する
PDO::prepare
-
setAttribute() …属性を設定する
PDO::setAttribute
-
query() …SQLを実行する
PDO::query
-
execute() …SQLを実行する
PDOStatement::execute
-
fetch() …結果を取得する
PDOStatement::fetchAll
-
fetchAll() …結果をすべて取得する
PDOStatement::fetch
今回はここまで