mysqli_stmt_prepare
(PHP 5)
mysqli_stmt_prepare
(no version information, might be only in CVS)
stmt->prepare() -- SQL ステートメントを実行するために準備する
説明
手続き型:
bool
mysqli_stmt_prepare ( mysqli_stmt stmt, string query )
オブジェクト指向型(メソッド)
class
mysqli_stmt {
mixed
prepare ( string query )
}
null で終わる文字列で指定した SQL クエリを準備します。
パラメータマーカは、ステートメントの実行や行の取得の前に
mysqli_stmt_bind_param()
や mysqli_stmt_bind_result() を使用して
アプリケーション変数にバインドする必要があります。
パラメータ
stmt
手続き型のみ:
mysqli_stmt_init() が返すステートメント ID。
query
クエリを表す文字列。単一の SQL 文で構成されている必要があります。
ひとつまたは複数のパラメータを SQL 文に含めることができます。
そのためには、適切な位置にクエスチョンマーク
(?) を埋め込みます。
注意:
ステートメントの最後にセミコロンや \g
を追加してはいけません。
注意:
パラメータのマーカは、それが SQL 文の適切な位置にある場合のみ
有効です。例えば INSERT 文の VALUES() リストの中
(行に登録するカラム値を指定する) や
WHERE 句で列のデータと比較する値などが適切な位置の例です。
しかし、識別子 (テーブルやカラムの名前) や SELECT 文で選択する
項目の名前に指定したり、(等号 = のような)
二項演算子の両側にパラメータを指定したりすることはできません。
後者の制限は、パラメータの型が判断できなくなることによるものです。
また、パラメータのマーカを NULL と比較して
? IS NULL のようにすることもできません。
一般に、パラメータが使用可能なのはデータ操作言語 (DML)
ステートメントであり、データ定義言語 (DDL) ステートメントでは
使用できません。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例 1. オブジェクト指向型
<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* 接続状況をチェックします */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); }
$city = "Amersfoort";
/* プリペアドステートメントを作成します */ $stmt = $mysqli->stmt_init(); if ($stmt->prepare("SELECT District FROM City WHERE Name=?")) {
/* マーカにパラメータをバインドします */ $stmt->bind_param("s", $city);
/* クエリを実行します */ $stmt->execute();
/* 結果変数をバインドします */ $stmt->bind_result($district);
/* 値を取得します */ $stmt->fetch();
printf("%s is in district %s\n", $city, $district);
/* ステートメントを閉じます */ $stmt->close(); }
/* 接続を閉じます */ $mysqli->close(); ?>
|
|
例 2. 手続き型
<?php $link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* 接続状況をチェックします */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); }
$city = "Amersfoort";
/* プリペアドステートメントを作成します */ $stmt = mysqli_stmt_init($link); if (mysqli_stmt_prepare($stmt, 'SELECT District FROM City WHERE Name=?')) {
/* マーカにパラメータをバインドします */ mysqli_stmt_bind_param($stmt, "s", $city);
/* クエリを実行します */ mysqli_stmt_execute($stmt);
/* 結果変数をバインドします */ mysqli_stmt_bind_result($stmt, $district);
/* 値を取得します */ mysqli_stmt_fetch($stmt);
printf("%s is in district %s\n", $city, $district);
/* ステートメントを閉じます */ mysqli_stmt_close($stmt); }
/* 接続を閉じます */ mysqli_close($link); ?>
|
|
上の例の出力は以下となります。
Amersfoort is in district Utrecht |