| プリペアドステートメントを実行する | |
| bool PDOStatement::execute([array $bound_input_params]) | |
| array $bound_input_params | 結合入力引数 |
$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の設定値
|
|||||||||||||
/* データの取得 */ $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() | |
$stmt = $dbh->prepare('SELECT name FROM account_tbl id = 1'); /* 最初のカラム情報を取得 */ echo $stmt->fetchSingle(); |
| 結果リソースの全ての値を取得 | |
| array PDOStatement::fetchAll([int $how = PDO_FETCH_BOTH]) | |
| int $how | 結果取得方法 |
/* データの取得 */ $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 | データベース情報 | ||||||||||
型の設定値
|
|||||||||||
$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 | データベース情報 |
$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での使用は出来ないようです。$dbh = new PDO('sqlite:test.db','', ''); $stmt = $dbh->prepare('DELETE FROM account_tbl'); $stmt->execute(); /* 影響を受けた行数の取得 */ echo $stmt->rowCount(); |
| エラーコードの取得 | |||||||||||||||||||||||
| int PDOStatement::errorCode() | |||||||||||||||||||||||
errorCodeの戻り値
|
|||||||||||||||||||||||
| エラー情報の取得 | |||||||||||||||||||||||
| array PDOStatement::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; |
|||||||||||||||||||||||
| アトリビュート設定 | |||||||||||||||||||||||||||||||||||||
| bool PDOStatement::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','', ''); $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の設定値
|
|||||||||
$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() | |
echo $stmt->columnCount(); |
| メタデータの取得 | |
| array PDOStatement::getColumnMeta(int $column) | |
| int $column | カラム番号 |
echo $stmt->getColumnMeta(1); |
|
