DB_common::execute()
DB_common::execute() – 準備された SQL 文を実行する
Synopsis
mixed &execute (
resource $stmt
,
mixed $data = array()
)
Description
prepare() で指定した SQL 文に
$data
の情報を適用し、クエリを
データベースに送信します。
Parameter
-
resource
$stmt
-
prepare()
が返すクエリハンドル。
-
mixed
$data
-
プリペアドステートメントに適用する配列・文字列あるいは数値のデータ。
渡す項目数は、文中のプレースホルダの数と一致していなければなりません。
プレースホルダがひとつだけの場合は配列でない値を指定し、
複数存在する場合は個々の値を要素にもつ配列を指定します。
Return value
mixed - 結果を返すクエリ (例えば SELECT
クエリなど) の場合は新しい DB_result オブジェクト、
データを操作するクエリ (例えば INSERT クエリなど)
の場合は DB_OK、
あるいは失敗した場合には DB_Error オブジェクトを返します。
Throws
Possible PEAR_Error values
エラーコード |
エラーメッセージ |
原因 |
対応法 |
DB_ERROR_INVALID |
invalid
|
有効な SQL 文ハンドルではありません。
|
現在実行している SQL 文と
prepare() を調べます。
execute() に必要なのは、
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 (number) VALUES (?)');
if (PEAR::isError($sth)) {
die($sth->getMessage());
}
$res =& $db->execute($sth, 1);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$sth = $db->prepare('INSERT INTO numbers VALUES (?, ?, ?)');
$data = array(1, 'one', 'en');
$db->execute($sth, $data);
?>