mysqli::prepare

mysqli_prepare

(PHP 5, PHP 7, PHP 8)

mysqli::prepare -- mysqli_prepare実行するための SQL文 を準備する

説明

オブジェクト指向型

publicmysqli::prepare(string$query): mysqli_stmt|false

手続き型

mysqli_prepare(mysqli$mysql, string$query): mysqli_stmt|false

SQL文を準備し、後でそれを操作するために使用する ステートメントハンドルを返します。 クエリは、単一の SQL文である必要があります。

SQL文のテンプレートには、ゼロ個以上のパラメータマーカ (?) を含めることができます。 パラメータマーカは、プレースホルダとも呼ばれています。 パラメータマーカは、SQL文を実行する前に mysqli_stmt_bind_param() を使用して アプリケーション変数にバインドする必要があります。

パラメータ

link

手続き型のみ: mysqli_connect() あるいは mysqli_init() が返す mysqliオブジェクト。

query

クエリを表す文字列。 単一のSQL文である必要があります。

SQL文には、ゼロ個以上のパラメータマーカを含めることができますます。 パラメータマーカはクエスチョンマーク(?) を適切な位置に置くことで埋め込みます。

注意:

パラメータのマーカは、それが SQL 文の適切な位置にある場合のみ有効です。 例えば INSERT 文の VALUES() リストの中 (行に登録するカラムの値を指定する) や WHERE 句でカラムのデータと比較する値などが 適切な位置の例です。 しかし、識別子 (テーブルやカラムの名前) には使用できません。

戻り値

mysqli_prepare() はステートメントオブジェクトを返します。 エラー時には false を返します。

エラー / 例外

mysqli のエラー報告 (MYSQLI_REPORT_ERROR) が有効になっており、かつ要求された操作が失敗した場合は、警告が発生します。さらに、エラー報告のモードが MYSQLI_REPORT_STRICT に設定されていた場合は、mysqli_sql_exception が代わりにスローされます。

例1 mysqli::prepare() の例

オブジェクト指向型

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$city = "Amersfoort";


$stmt = $mysqli->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);

手続き型

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

$city = "Amersfoort";


$stmt = mysqli_prepare($link, "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);

上の例の出力は以下となります。

Amersfoort is in district Utrecht

参考

To Top