データベース操作用の共通APIの一種。
サポートDBの一覧取得
pdo_drivers() 関数により、使用可能なドライバ名の一覧を配列で取得できる。
使用可能=ドライバがある、というだけでデータベースがインストールされているわけではないです。
$db = new PDO('xxx:') するときの、ドライバ名'xxx' に相当する文字列が得られます。
$drivers = pdo_drivers();
接続オープン
SQLite2のデータベースを開く場合の例。
第二引数、第三引数は、ユーザ名とパスワードなので空文字でOK。
$db = new PDO('sqlite2:C:/temp/sample.db', '', '');
php.iniにデータソース名を登録しておく方法もある。
php.ini
pdo.dsn.sampledb = "sqlite2:C/temp/sample.db"
$db = new PDO('sampledb');
検索
シンプル検索
$db = new PDO('sqlite2:C:/temp/sample.db2', '', '');
if ($db == null) die('DBが使えないよ');
$sql = 'select id, name from tblSample';
$stmt = $conn->prepare($sql);
if ($stmt->execute()) {
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
print $row['id'].':'.$row['name'];
}
}
レコード取得用パラメータ
PDO::FETCH_ASSOC |
カラム名をキーとする配列で返す |
PDO::FETCH_NUM |
カラム番号(0~)をキーとする配列で返す |
PDO::FETCH_BOUND |
bindParam() メソッドでバインドした変数に値を返す |
PDO::FETCH_OBJ |
カラム名に対応するプロパティ名を有するオブジェクトで返す |
PDO::FETCH_LAZY |
FETCH_BOTHとFETCH_OBJの組み合わせ |
PDO::FETCH_BOTH |
FETCH_ASSOCとFETCH_NUMの混合(デフォルト) |
PDO::FETCH_INTO |
指定したクラスの既存インスタンスに代入 |
PDO::FETCH_CLASS |
指定したクラスの新規インスタンスに代入 |
PDO::FETCH_COLUMN |
指定カラムのみを返す |
カラムを変数にバインド
$sql = 'select id, name from tblSample';
$stmt = $conn->prepare($sql);
$stmt->bindColumn('id', $id); // カラム名で指定
$stmt->bindColumn(2, $name); // 何番目のカラムかで指定
if ($stmt->execute()) {
while($row = $stmt->fetch(PDO::FETCH_BOUND))
{
print $id.':'.$name;
}
}
バインド時に型を指定する
$stmt->bindColumn('id', $id, PDO::PARAM_INT);
型パラメータ
PDO::PARAM_NULL |
SQL NULL型 |
PDO::PARAM_INT |
SQL INTEGER型 |
PDO::PARAM_STR |
SQL CHAR, VARCHAR, など文字列データ型 |
PDO::PARAM_LOB |
SQLラージオブジェクト(ストリームオブジェクトとして取得される) |
PDO::PARAM_STMT |
ステートメント |
PDO::PARAM_INPUT_OUTPUT |
入出力(INOUTパラメータを持つストアドで使用) |
|