DB_common::autoPrepare()
DB_common::autoPrepare() –
指定した変数に基づいて、
INSERT 文あるいは UPDATE 文を準備する
Synopsis
resource autoPrepare (
string $table
,
array $table_fields
,
integer $mode =
= DB_AUTOQUERY_INSERT
,
string $where
= = false
)
Parameter
-
string
$table
-
テーブルの名前。
-
array
$table_fields
-
フィールド名を含む配列。
これらのフィールドには ? プレースホルダが
割り当てられることに中いしましょう。そのため、
execute() で渡すデータは、現在の DBMS の
要求に応じて自動的にエスケープおよびクォートが行われます。
-
integer
$mode
-
作成するクエリの型 (DB_AUTOQUERY_INSERT
あるいは DB_AUTOQUERY_UPDATE)。
-
string
$where
-
WHERE 句に使用する文字列。
$mode
が
DB_AUTOQUERY_UPDATE の場合にのみ使用されます。
この文字列は直接クエリに組み込まれます。そのため、DBMS の規約に
従ってリテラルのエスケープおよびクォートを行う必要があります。
Return value
resource - クエリのリソースハンドル、あるいは失敗した場合に
DB_Error オブジェクトを返します。
Throws
Possible PEAR_Error values
エラーコード |
エラーメッセージ |
原因 |
対応法 |
DB_ERROR_NEED_MORE_DATA |
insufficient data supplied
|
フィールド名を含む配列が空です。
|
フィールド名の配列を調べ、修正します。
|
DB_ERROR_SYNTAX |
syntax error
|
モードの指定が間違っています。
|
INSERT クエリ用の
DB_AUTOQUERY_INSERT、あるいは
UPDATE クエリ用の
DB_AUTOQUERY_UPDATE のみが指定可能です。
|
DB_ERROR_NODBSELECTED |
no database selected
|
データベースが選択されていません。
|
connect() の際の
DSN
を調べます。
|
その他のエラーコード |
|
データベース固有のエラー。
|
PHP マニュアル
のデータベース関連の部分を調べ、エラーの原因を判断してください。
|
Note
This function can not be called
statically.
Example
insert モードでの autoPrepare() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$table_name = 'user';
$table_fields = array('name', 'country');
$table_values = array('Zoe', 'France');
$sth = $db->autoPrepare($table_name, $table_fields,
DB_AUTOQUERY_INSERT);
if (PEAR::isError($sth)) {
die($sth->getMessage());
}
$res =& $db->execute($sth, $table_values);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>
update モードでの autoPrepare() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$table_name = 'user';
$table_fields = array('name', 'country');
$table_values = array('Bob', 'USA');
$sth = $db->autoPrepare($table_name, $table_fields,
DB_AUTOQUERY_UPDATE, "country = 'Japan'");
if (PEAR::isError($sth)) {
die($sth->getMessage());
}
$res =& $db->execute($sth, $table_values);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>