rakutoネット
お問合せ 免責事項 Q&A 掲示板 サイト管理 リンク サイトマップ
HOME > データベースハンドルクラス

データベースハンドルクラス


コンストラクタ
object PDO::__construct(string dsn, string username, string passwd [, array driver_opts])
string dsn データソース名
string username データベース接続ユーザー名
string passwd ユーザーパスワード
array driver_opts 各データベース指定オプション
<?php
/* SQLiteデータベースハンドルの生成 */
$dbh = new PDO('sqlite:test.db','', '');
 
/* MySqlデータベースハンドルの生成 */
$dbh = new PDO('mysql:dbname=test;host=localhost','user1', 'passwd');
?>

プリペアドステートメントの作成
object PDO::prepare(string statment [, int options [, array driver_options]])
string statment SQL文、バインド用命令文
int options オプション
array driver_opts 各データベース指定オプション
<?php
$dbh = new PDO('sqlite:test.db','', '');
 
$sql = "INSERT INTO account_tbl (id, name, email) VALUES (:id,:name,:email) ";
/* ステートメントの作成 */
$stmt = $dbh->prepare($sql); 
$stmt = null;
?>

トランザクション開始宣言
bool PDO::beginTransaction()
トランザクションの確証
bool PDO::commit()
トランザクション内のクエリ取りやめ
bool PDO::rollBack()
<?php
/* PDO データベースハンドルの生成 */
$dbh = new PDO('sqlite:test.db','', '');
 
/* エラーモードの設定(例外処理を有効) */
$dbh->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
 
/* テーブルの作成 */
$query = <<<QUERY
CREATE TABLE account_tbl (
    id INTEGER,
    name VARCHAR(64) NOT NULL,
    email VARCHAR(128) UNIQUE,
    PRIMARY KEY (id)
);
QUERY;
try {
    $dbh->query($query); 
} catch (PDOException $exception){
    catch $exception->getMessage();
}
 
/* トランザクションの開始 */
$dbh->beginTransaction();
 
try {
    /* プリペアドステートメントの生成 */
    $query = "INSERT INTO account_tbl (name,email) VALUES (:name,:email) ";
    $stmt = $dbh->prepare($query); 
    $stmt->bindParam(':name',  $name, PDO_PARAM_STR, 64);
    $stmt->bindParam(':email', $email, PDO_PARAM_STR, 128);
 
    $values = array(
        array('name'=>'高橋', 'email'=>'yujiro@rakuto.net'),
        array('name'=>'藤井', 'email'=>'fuzy@rakuto.net')
    );
 
    foreach ($values as $value){
        $name = $value['name'];
        $email = $value['email'];
        $stmt->execute();
    }
    $stmt = null; 
 
    /* トランザクションの確証 */
    $dbh->commit();
} catch (PDOException $exception){
    /* トランザクションの内のクエリ取りやめ */
    $dbh->rollBack();
 
    echo $exception->getMessage();
}
?>

アトリビュート設定
bool PDO::setAttribute(long attribute, mixed value)
long attribute データソース名
mixed value データベース接続ユーザー名
attributeの設定値
PDO_ATTR_AUTOCOMMIT自動コミット
PDO_ATTR_SCROLLスクロールカーソル
PDO_ATTR_PREFETCH事前取得
PDO_ATTR_TIMEOUTタイムアウト
PDO_ATTR_ERRMODEエラーモード
PDO_ATTR_CASE移植性コントロール
PDO_ATTR_CURSOR_NAMEカーソル名
PDO_ATTR_CURSORカーソルタイプ
PDO_ATTR_ORACLE_NULLSNULL変換
PDO_ATTR_PERSISTENT持続的接続

PDO_ATTR_ERRMODEの設定値
PDO_ERRMODE_SILENTエラー
PDO_ERRMODE_WARNING警告
PDO_ERRMODE_EXCEPTION例外

PDO_ATTR_CASEの設定値
PDO_CASE_NATURALそのまま
PDO_CASE_UPPER上位
PDO_CASE_LOWER下位

PDO_ATTR_CURSORの設定値
PDO_CURSOR_FWDONLY前方のみ
PDO_CURSOR_SCROLLスクロール
<?php
$dbh = new PDO('sqlite:test.db','', '');
 
/* アトリビュート設定 */
$dbh->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
?>

アトリビュート取得
mixed PDO::getAttribute(long attribute)
long attribute データソース名
mixed value データベース接続ユーザー名
attributeの設定値
PDO_ATTR_SERVER_VERSIONデータベースバージョン
PDO_ATTR_CLIENT_VERSIONクライアントバージョン
PDO_ATTR_SERVER_INFOサーバー情報
PDO_ATTR_CONNECTION_STATUS接続ステータス

<?php
/* SQLiteデータベースハンドルの生成 */
$dbh = new PDO('sqlite:test.db','', '');
 
/* アトリビュート設定 */
$result = $dbh->setAttribute(PDO_ATTR_SERVER_VERSION);
print_r($result);
?>

クエリ実行
long PDO::query(string query)
string query クエリ、SQL文
<?php
/* SQLiteデータベースハンドルの生成 */
$dbh = new PDO('sqlite:test.db','', '');
 
/* テーブルの作成 */
$query = <<<QUERY
CREATE TABLE account_tbl (
    id INTEGER NOT NULL,
    name VARCHAR(64) NOT NULL,
    email VARCHAR(128),
    PRIMARY KEY (id)
);
QUERY;
$dbh->query($query);
 
/* INSERT,UPDATE,DELTEでは影響を受けた行数を返す */
$affected_row = $dbh->query("INSERT INTO account_tbl(name,email)VALUES".
                            "('shiro','shiro@mail.net') "); 
?>

最後に生成されたIDの取得
int PDO::lastInsertId()
<?php
/* SQLiteデータベースハンドルの生成 */
$dbh = new PDO('sqlite:test.db','', '');
 
/* テーブルの作成 */
$query = <<<QUERY
CREATE TABLE account_tbl (
    id INTEGER NOT NULL,
    name VARCHAR(64) NOT NULL,
    email VARCHAR(128),
    PRIMARY KEY (id)
);
QUERY;
$dbh->query($query);
 
/* INSERT,UPDATE,DELTEでは影響を受けた行数を返す */
$affected_row = $dbh->query("INSERT INTO account_tbl(name,email)VALUES".
                    "('shiro','shiro@mail.net') "); 
 
/* 最後に生成されたIDの取得 */
/* PrimaryKeyにシーケンスを割り当てる必要があります。 */    
$id = $dbh->lastInsertId();
?>

エラーコードの取得
int PDO::errorCode()
errorCodeの戻り値
PDO_ERR_NONEエラーなし
PDO_ERR_CANT_MAPerrorInfo()による詳細が必要
PDO_ERR_SYNTAX構文エラー
PDO_ERR_CONSTRAINT制約違反
PDO_ERR_NOT_FOUND見つからない
PDO_ERR_ALREADY_EXISTS既存あり
PDO_ERR_NOT_IMPLEMENTED履行できない
PDO_ERR_MISMATCH不一致
PDO_ERR_TRUNCATED省略された
PDO_ERR_DISCONNECTED切断された
PDO_ERR_NO_PERM権限なし

エラー情報の取得
array PDO::errorInfo()
<?php
/* PDO データベースハンドルの生成 */
$dbh = new PDO('sqlite:test.db','', '');
 
/* エラーモードの設定(デフォルト) */
$dbh->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_SILENT);
 
/* テーブルの作成 */
$query = <<<QUERY
CREATE TABLE account_tbl (
    id INTEGER,
    name VARCHAR(64) NOT NULL,
    email VARCHAR(128) UNIQUE,
    PRIMARY KEY (id)
);
QUERY;
$dbh->query($query); 
/* エラー判定 */
if (PDO_ERR_NONE != $dbh->errorCode()){
    $error = $dbh->errorInfo();
    print_r($error);
}
 
/* プリペアドステートメントの生成 */
$query = "INSERT INTO account_tbl (name,email) VALUES (:name,:email) ";
$stmt = $dbh->prepare($query); 
$stmt->bindParam(':name',  $name, PDO_PARAM_STR, 64);
$stmt->bindParam(':email', $email, PDO_PARAM_STR, 128);
 
$values = array(
    array('name'=>'高橋', 'email'=>'yujiro@rakuto.net'),
    array('name'=>'藤井', 'email'=>'fuzy@rakuto.net')
);
 
foreach ($values as $value){
    $name = $value['name'];
    $email = $value['email'];
    $stmt->execute();
}
 
/* エラー判定 */
if (PDO_ERR_NONE != $stmt->errorCode()){
    $error = $stmt->errorInfo();
    print_r($error);
}
 
$stmt = null;
?>

<<PDOクラスリファレンス
PDOでSQLite!! ステートメントクラス>>

PHPリング

@PHP.ring Home
<5 <1 Random List 1> 5>

rktSQLite

  • sourceforge.jp

広告


アマゾン検索

サーチ:
Amazon.co.jpアソシエイト

カテゴリ

  •  Templateエンジンのすすめ Templateエンジンのすすめ
  •  SQLiteをやってみよう SQLiteをやってみよう
  •  SQLite SQLコマンド一覧 SQLiteコマンド一覧
  •  SQLite 管理プログラムSQLite 管理
  •  はじめてのEclipse はじめてのEclipse
  •  PHP SQLiteのTIPS PHP SQLiteのTIPS
  •  サンプル サンプル/ダウンロード
  •  リンク リンク
  •  掲示板 掲示板

メニュー

  •  PDO(PHP Data Objects)とは
  •  PDOの概要
  •  PDOクラスリファレンス
  •  データベースハンドルクラス
  •  ステートメントクラス

キーワード検索

キーワード



最近のTB

  •  2006/03/13さくらのブログに挑戦[rakutoネットブログ]
  •  2006/01/20レーザーチャートの作成方法[脳内研究所]

Summary

  •     ATOM(XML)
  •     RDF(XML)
  •     RSS0.92(XML)
  •     RSS2.0(XML)

Powered by

  •     PHP
  •     Smarty
  •     SQLite
  •     MySQL
Copyright (C) 2005 `rakuto.net' All Rights Reserved.