PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

mysqli::prepare - 実行するための SQL ステートメントを準備する | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

mysqli::prepare

mysqli_prepare

(PHP 5, PHP 7)

mysqli::prepare -- mysqli_prepare実行するための SQL ステートメントを準備する

説明

オブジェクト指向型

mysqli_stmt mysqli::prepare ( string $query )

手続き型

mysqli_stmt mysqli_prepare ( mysqli $link , string $query )

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

パラメータマーカは、ステートメントの実行や行の取得の前に mysqli_stmt_bind_param()mysqli_stmt_bind_result() を使用して アプリケーション変数にバインドする必要があります。

パラメータ

link

手続き型のみ: mysqli_connect() あるいは mysqli_init() が返すリンク ID。

query

クエリを表す文字列。

注意:

ステートメントの最後にセミコロンや \g を追加してはいけません。

query にはひとつまたは複数のパラメータを 含めることが可能です。そのためには、適切な位置にクエスチョンマーク (?) を埋め込みます。

注意:

パラメータのマーカは、それが SQL 文の適切な位置にある場合のみ有効です。 例えば INSERT 文の VALUES() リストの中 (行に登録するカラム値を指定する) や WHERE 句で列のデータと比較する値などが 適切な位置の例です。

しかし、識別子 (テーブルやカラムの名前) や SELECT 文で選択する項目の名前に指定したり、 (等号 = のような) 二項演算子の両側にパラメータを指定したりすることはできません。 後者の制限は、パラメータの型が判断できなくなることによるものです。 また、パラメータのマーカを NULL と比較して ? IS NULL のようにすることもできません。 一般に、パラメータが使用可能なのはデータ操作言語 (DML) ステートメントであり、データ定義言語 (DDL) ステートメントでは使用できません。

返り値

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

例1 mysqli::prepare() の例

オブジェクト指向型

<?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";

/* プリペアドステートメントを作成します */
if ($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);

    
/* ステートメントを閉じます */
    
$stmt->close();
}

/* 接続を閉じます */
$mysqli->close();
?>

手続き型

<?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";

/* プリペアドステートメントを作成します */
if ($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);

    
/* ステートメントを閉じます */
    
mysqli_stmt_close($stmt);
}

/* 接続を閉じます */
mysqli_close($link);
?>

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

Amersfoort is in district Utrecht

参考


忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「mysqli::prepare - 実行するための SQL ステートメントを準備する」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | mysqli::prepare - 実行するための SQL ステートメントを準備する」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: