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

ステートメントクラス


プリペアドステートメントを実行する
bool PDOStatement::execute([array $bound_input_params])
array $bound_input_params 結合入力引数
<?php
$dbh = new PDO('sqlite:test.db','', '');
 
/* ステートメントクラスの生成 */
$query = "INSERT INTO account_tbl(number,name,email)".
                            "VALUES(:number,:name,:email) ";
$stmt = $dbh->prepare($query); 
 
$stmt->bindParam(':number',$number, PDO_PARAM_INT);
$stmt->bindParam(':name',  $name, PDO_PARAM_STR, 64);
$stmt->bindParam(':email', $email, PDO_PARAM_STR, 128);
 
$number = 30248;
$name = '高橋'; 
$email = 'yujiro@rakuto.net'; 
/* クエリを実行する */
$stmt->execute(); 
?>

結果リソースの値を取得
mixed PDOStatement::fetch([int $how = PDO_FETCH_BOTH])
int $how 結果取得方法
FETCHの設定値
PDO_FETCH_LAZYPDORow Object
PDO_FETCH_ASSOC連想配列
PDO_FETCH_NUM順番配列
PDO_FETCH_BOTH順番配列と連想配列
PDO_FETCH_OBJstdClass Object
PDO_FETCH_BOUND結合用

<?php
    /* データの取得 */
    $stmt = $dbh->prepare('SELECT * FROM account_tbl'); 
    $stmt->execute();
    $cols = array();
    /* 結果リソースから値を返す */
    while ($cols = $stmt->fetch(PDO_FETCH_ASSOC)) { 
        echo "----------------------n";
        echo "id    = {$cols['id']}n";
        echo "name  = {$cols['name']}n";
        echo "email = {$cols['email']}n";
        echo "----------------------n";
    } 
    $stmt = null;
?>

結果リソースの最初の値を取得
string PDOStatement::fetchSingle()
<?php
$stmt = $dbh->prepare('SELECT name FROM account_tbl id = 1'); 
/* 最初のカラム情報を取得 */
echo $stmt->fetchSingle();
?>

結果リソースの全ての値を取得
array PDOStatement::fetchAll([int $how = PDO_FETCH_BOTH])
int $how 結果取得方法
<?php
/* データの取得 */
$stmt = $dbh->prepare('SELECT * FROM account_tbl'); 
$stmt->execute();
$all = $stmt->fetchAll();
 
print_r($all);
?>

バインド変数処理
bool PDOStatement::bindParam(mixed $paramno, mixed &$param [, int $type [, int $maxlen [, mixed $driverdata]]])
mixed $paramno バインド変数名
mixed &$param バインド変数
int $type データ型
int $maxlen 最大数
mixed $driverdata データベース情報
型の設定値
PDO_PARAM_NULLNULL
PDO_PARAM_INT固定精度整数
PDO_PARAM_STR文字列
PDO_PARAM_LOBラージオブジェクト
PDO_PARAM_STMThierarchical result set

<?php
$dbh = new PDO('sqlite:test.db','', '');
 
/* ステートメントクラスの生成 */
$query = "INSERT INTO account_tbl(number,name,email)".
                            "VALUES(:number,:name,:email) ";
$stmt = $dbh->prepare($query); 
 
/* バインド変数を設定 */
$stmt->bindParam(':number',$number, PDO_PARAM_INT);
$stmt->bindParam(':name',  $name, PDO_PARAM_STR, 64);
$stmt->bindParam(':email', $email, PDO_PARAM_STR, 128);
 
$number = 30248;
$name = '高橋'; 
$email = 'yujiro@rakuto.net'; 
/* クエリを実行する */
$stmt->execute(); 
?>

バインドカラム処理
bool PDOStatement::bindColumn(mixed $column, mixed &$param [, int $type [, int $maxlen [, mixed $driverdata]]])
mixed $column バインドカラム名
mixed &$param バインド変数
int $type データ型
int $maxlen 最大数
mixed $driverdata データベース情報
<?php
$dbh = new PDO('sqlite:test.db','', '');
 
$stmt = $dbh->prepare('SELECT id, name, email FROM account_tbl'); 
$stmt->execute(); 
/* バインドカラム処理 */
$stmt->bindColumn('id', $id); 
$stmt->bindColumn('name', $name); 
$stmt->bindColumn('email', $email); 
 
while ($stmt->fetch(PDO_FETCH_BOUND)) { 
    echo "----------------------n";
    echo "id    = {$id}n";
    echo "name  = {$name}n";
    echo "email = {$email}n";
    echo "----------------------n";
} 
?>

影響を受けた行数の取得
int PDOStatement::rowCount()
SELECTでの使用は出来ないようです。
<?php
$dbh = new PDO('sqlite:test.db','', '');
 
$stmt = $dbh->prepare('DELETE FROM account_tbl'); 
$stmt->execute(); 
 
/* 影響を受けた行数の取得 */
echo $stmt->rowCount();
?>

エラーコードの取得
int PDOStatement::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 PDOStatement::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;
?>

アトリビュート設定
bool PDOStatement::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','', '');
 
$stmt = $dbh->prepare('SELECT id, name, email FROM account_tbl'); 
 
/* アトリビュート設定 */
$stmt->setAttribute(PDO_ATTR_CURSOR, PDO_CURSOR_FWDONLY);
?>

アトリビュート取得
mixed PDOStatement::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
$dbh = new PDO('sqlite:test.db','', '');
 
$stmt = $dbh->prepare('SELECT id, name, email FROM account_tbl'); 
 
/* アトリビュート設定 */
$result = $stmt->getAttribute(PDO_ATTR_CONNECTION_STATUS);
print_r($result);
?>

フィールド数の取得
int PDOStatement::columnCount()
<?php
echo $stmt->columnCount();
?>

メタデータの取得
array PDOStatement::getColumnMeta(int $column)
int $column カラム番号
<?php
echo $stmt->getColumnMeta(1);
?>

<<データベースハンドルクラス
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.