| コンストラクタ | |
| object PDO::__construct(string dsn, string username, string passwd [, array driver_opts]) | |
| string dsn | データソース名 |
| string username | データベース接続ユーザー名 |
| string passwd | ユーザーパスワード |
| array driver_opts | 各データベース指定オプション |
/* 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 | 各データベース指定オプション |
$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() | |
/* 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_ERRMODEの設定値
PDO_ATTR_CASEの設定値
PDO_ATTR_CURSORの設定値
|
|||||||||||||||||||||||||||||||||||||
$dbh = new PDO('sqlite:test.db','', ''); /* アトリビュート設定 */ $dbh->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION); |
|||||||||||||||||||||||||||||||||||||
| アトリビュート取得 | |||||||||
| mixed PDO::getAttribute(long attribute) | |||||||||
| long attribute | データソース名 | ||||||||
| mixed value | データベース接続ユーザー名 | ||||||||
attributeの設定値
|
|||||||||
/* 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文 |
/* 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() | |
/* 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の戻り値
|
|||||||||||||||||||||||
| エラー情報の取得 | |||||||||||||||||||||||
| array PDO::errorInfo() | |||||||||||||||||||||||
/* 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; |
|||||||||||||||||||||||
