PHP マニュアル
前のページ |  | 次のページ

# 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

## 参考

mysqli_stmt_init(), mysqli_stmt_execute(), mysqli_stmt_fetch(), mysqli_stmt_bind_param(), mysqli_stmt_bind_result() mysqli_stmt_close().

前のページ | ホーム | 次のページ
mysqli_stmt_param_count | 上に戻る | mysqli_stmt_reset