PHP‎ > ‎

PDO

データベース操作用の共通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パラメータを持つストアドで使用)
 
Comments