DB_common::executeMultiple()
DB_common::executeMultiple() – 配列の各要素内に準備された SQL 文を実行する
Synopsis
integer executeMultiple (
resource $stmt
,
array $data
)
Parameter
-
resource
$stmt
-
prepare()
が返すクエリハンドル。
-
array
$data
-
クエリに挿入するデータを含む配列。
Return value
integer - 成功した場合に DB_OK、
失敗した場合に DB_Error オブジェクトを返します。
Throws
Possible PEAR_Error values
エラーコード |
エラーメッセージ |
原因 |
対応法 |
DB_ERROR_INVALID |
invalid
|
有効な SQL 文ハンドルではありません。
|
現在実行している SQL 文と
prepare() を調べます。
executeMultiple() に必要なのは、
prepare() が返すハンドルであって
SQL 文自身ではないことに注意しましょう。
|
DB_ERROR_MISMATCH |
mismatch
|
パラメータの数が、文中のプレースホルダの数と一致しません。
|
$query
に渡した
prepare() 済みの文中の
プレースホルダの数が、$params
で渡した項目の数と一致するかどうかを調べます。
|
DB_ERROR_NODBSELECTED |
no database selected
|
データベースが選択されていません。
|
connect() の際の
DSN
を調べます。
|
その他のエラーコード |
|
データベース固有のエラー。
|
PHP マニュアル
のデータベース関連の部分を調べ、エラーの原因を判断してください。
たいていの場合は SQL 文が間違っていることが原因です。例えば
Oracle データベースに対して SQL で LIMIT を使用しているなどが
考えられます。
|
Note
This function can not be called
statically.
実行時にエラーが発生した場合は、この関数は停止します。
それ以降のデータは処理されません。
$data
に渡す値は、リテラルである必要があります。
SQL 関数 (例えば CURDATE() など) を渡さないでください。
実行時に処理される SQL 関数は、プリペアドステートメント内に記述する
必要があります。
Example
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$sth = $db->prepare('INSERT INTO numbers VALUES (?, ?, ?)');
if (PEAR::isError($sth)) {
die($sth->getMessage());
}
$alldata = array(array(1, 'one', 'en'),
array(2, 'two', 'to'),
array(3, 'three', 'tre'),
array(4, 'four', 'fire'));
$res =& $db->executeMultiple($sth, $alldata);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>