DB_common::autoExecute()
DB_common::autoExecute() –
指定した変数に基づいて、
INSERT 文あるいは UPDATE 文を準備・実行する
Synopsis
integer autoExecute (
string $table
,
array $fields_values
,
integer $mode =
= DB_AUTOQUERY_INSERT
,
string $where
= = false
)
Description
INSERT あるいは
UPDATE クエリを自動的に準備し、実行します。
このメソッドは、
autoPrepare() を使用して SQL 文を
組み立て、それを
execute() を使用して実行します。
Parameter
-
string
$table
-
テーブルの名前。
-
array
$fields_values
-
フィールド名をキーとし、フィールドの値を対応させた連想配列。
値は、現在の DBMS の
要求に応じて自動的にエスケープおよびクォートが行われます。
-
integer
$mode
-
作成するクエリの型 (DB_AUTOQUERY_INSERT
あるいは DB_AUTOQUERY_UPDATE)。
-
string
$where
-
WHERE 句に使用する文字列。
$mode
が
DB_AUTOQUERY_UPDATE の場合にのみ使用されます。
この文字列は直接クエリに組み込まれます。そのため、DBMS の規約に
従ってリテラルのエスケープおよびクォートを行う必要があります。
Return value
integer - 成功した場合に DB_OK、
失敗した場合に 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.
$data
に渡す値は、リテラルである必要があります。
SQL 関数 (例えば CURDATE() など) を渡さないでください。
実行時に処理される SQL 関数は、プリペアドステートメント内に記述する
必要があります。
Example
insert モードでの autoExecute() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$table_name = 'user';
$fields_values = array(
'id' => 1,
'name' => 'Fabien',
'country' => 'France'
);
$res = $db->autoExecute($table_name, $fields_values,
DB_AUTOQUERY_INSERT);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>
update モードでの autoExecute() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$table_name = 'user';
$fields_values = array(
'country' => 'France',
);
$res = $db->autoExecute($table_name, $fields_values,
DB_AUTOQUERY_UPDATE, "country = 'Japan'");
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>