DB_common::autoPrepare() --
指定した変数に基づいて、
INSERT 文あるいは UPDATE 文を準備する
パラメータ
- string
$table
テーブルの名前。
- array
$table_fields
フィールド名を含む配列。
これらのフィールドには ? プレースホルダが
割り当てられることに中いしましょう。そのため、
execute() で渡すデータは、現在の DBMS の
要求に応じて自動的にエスケープおよびクォートが行われます。
- integer
$mode
作成するクエリの型 (DB_AUTOQUERY_INSERT
あるいは DB_AUTOQUERY_UPDATE)。
- string
$where
WHERE 句に使用する文字列。
$mode が
DB_AUTOQUERY_UPDATE の場合にのみ使用されます。
この文字列は直接クエリに組み込まれます。そのため、DBMS の規約に
従ってリテラルのエスケープおよびクォートを行う必要があります。
返り値
resource - クエリのリソースハンドル、あるいは失敗した場合に
DB_Error オブジェクトを返します。
例外・エラー
表 39-1PEAR_Error の値
エラーコード | エラーメッセージ | 原因 | 対応法 |
---|
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 マニュアル
のデータベース関連の部分を調べ、エラーの原因を判断してください。
|
注意
この関数は、スタティックにコールする
ことはできません。
例
例 39-1insert モードでの 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());
}
?> |
|
例 39-2update モードでの 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());
}
?> |
|