English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
mysqli_stmt_fetch()関数は、バインドされた変数にプレースホルダの結果を抽出します。
mysqli_prepare()関数を使用して、パラメータマーク(「?」)が設定されている(値がある場合)プレースホルダを持つプレースホルダを設定できます。プレースホルダ設定後、以下を使用してmysqli_stmt_bind_param()この関数は、作成されたステートメントのパラメータに値をバインドします。
同じ方法で、mysqli_stmt_bind_result()関数を使用して、結果セットの列を必要な変数にバインドできます。
もし呼び出された場合mysqli_stmt_fetch();この関数は、バインドされた列の後で、結果の列を指定された変数に抽出します。
mysqli_stmt_fetch($stmt);
番号 | パラメータ及び説明 |
---|---|
1 | stmt(必須) これは準備されたステートメントのオブジェクトを表します。 |
データを取得する場合、PHPのmysqli_stmt_fetch()関数は返しますTRUE;;エラーが発生した場合、FALSE;結果に行がもうない場合、NULL。
この関数は最初にPHPバージョン5で導入され、すべてのより高いバージョンで使用できます。
以下の例では、mysqli_stmt_fetch();関数の使用法(手続き型スタイル),結果の値を変数にバインドするプレースホルダーを使用します:
<?php $con = mysqli_connect("localhost", "root", "password", "mydb"); mysqli_query($con, "CREATE TABLE myplayers(ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Place_Of_Birth VARCHAR(255), Country VARCHAR(255))"); print("テーブルを作成中.....\n"); mysqli_query($con, "INSERT INTO myplayers values(1, 'Sikhar', 'Dhawan', 'Delhi', 'India')"); mysqli_query($con, "INSERT INTO myplayers values(2, 'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')"); print("レコードを挿入する.....\n"); //テーブルの内容を検索する $stmt = mysqli_prepare($con, "SELECT * FROM myplayers"); //ステートメントを実行 mysqli_stmt_execute($stmt); //結果の値を変数にバインド mysqli_stmt_bind_result($stmt, $id, $fname, $lname, $pob, $country); while (mysqli_stmt_fetch($stmt)) { print("Id: ",$id,"\n"); print("fname: ",$fname,"\n"); print("lname: ",$lname,"\n"); print("pob: ",$pob,"\n"); print("country: ",$country,"\n"); print("\n"); } //ステートメントを終了 mysqli_stmt_close($stmt); //接続を閉じる mysqli_close($con); ?>
出力結果
テーブルを作成..... レコードを挿入する..... Id: 1 fname: Sikhar lname: Dhawan pob: Delhi country: India Id: 2 fname: Jonathan lname: Trott pob: CapeTown country: SouthAfrica
オブジェクト指向スタイルでは、この関数の文法は以下の通りです$stmt-> fetch();。以下は、オブジェクト指向スタイルでのこの関数の例です。プレースホルダーを使用して変数を結果セットにバインドします:
<?php //接続を確立する $con = new mysqli("localhost", "root", "password", "mydb"); $con -> query("CREATE TABLE Test(Name VARCHAR(255), AGE INT"); $con -> query("insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27)"); print("テーブルを作成中.....\n"); $stmt = $con -> prepare( "SELECT * FROM Test WHERE Name in(?, ?)"); $stmt -> bind_param("ss", $name1, $name2); $name1 = 'Raju'; $name2 = 'Rahman'; print("レコードが削除されました.....\n"); //ステートメントを実行 $stmt->execute(); //変数を結果セットにバインドします $stmt->bind_result($name, $age); while ($stmt->fetch()) { print("Name: ".$name."\n"); print("Age: ".$age."\n"); } //ステートメントを終了 $stmt->close(); //接続を閉じる $con->close(); ?>
出力結果
テーブルを作成..... レコードが削除されました..... Name: Raju Age: 25 Name: Rahman Age: 30
以下の例では、mysqli_stmt_bind_result()およびmysqli_stmt_fetch()関数を使用してDESCRIBEクエリの結果を取得します-
<?php $con = mysqli_connect("localhost", "root", "password", "mydb"); mysqli_query($con, "CREATE TABLE myplayers(ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Place_Of_Birth VARCHAR(255), Country VARCHAR(255))"); print("テーブルを作成中.....\n"); //テーブルの説明 $stmt = mysqli_prepare($con, "DESC myplayers"); //ステートメントを実行 mysqli_stmt_execute($stmt); //結果の値を変数にバインド mysqli_stmt_bind_result($stmt, $field, $type, $null, $key, $default, $extra); while (mysqli_stmt_fetch($stmt)) { print("Field: ".$field."\n"); print("Type: ".$type."\n"); print("Null: ".$null."\n"); print("Key: ".$key."\n"); print("Default: ".$default."\n"); print("Extra: ".$extra."\n"); print("\n"); } //ステートメントを終了 mysqli_stmt_close($stmt); //接続を閉じる mysqli_close($con); ?>
出力結果
テーブルを作成..... Field: ID Type: int(11) Null: YES Key: デフォルト: Extra: Field: First_Name Type: varchar(255) Null: YES Key: デフォルト: Extra: Field: Last_Name Type: varchar(255) Null: YES Key: デフォルト: Extra: Field: Place_Of_Birth Type: varchar(255) Null: YES Key: デフォルト: Extra: Field: Country Type: varchar(255) Null: YES Key: デフォルト: Extra:
以下の例では、mysqli_stmt_bind_result()およびmysqli_stmt_fetch()関数を使用してSHOW TABLESクエリの結果を取得し、現在のデータベース内のすべてのテーブルを返します:
<?php $con = mysqli_connect("localhost", "root", "password"); //データベースを選択 mysqli_query($con, "CREATE DATABASE NewDatabase"); mysqli_select_db($con, "NewDatabase"); //テーブルを作成 mysqli_query($con, "CREATE TABLE test1(Name VARCHAR(255), Age INT)"); mysqli_query($con, "CREATE TABLE test2(Name VARCHAR(255), Age INT)"); mysqli_query($con, "CREATE TABLE test3(Name VARCHAR(255), Age INT)"); print("作成されたテーブル.....\n"); //テーブルを表示 $stmt = mysqli_prepare($con, "SHOW TABLES"); //ステートメントを実行 mysqli_stmt_execute($stmt); //結果の値を変数にバインド mysqli_stmt_bind_result($stmt, $table_name); print("現在のデータベース内のすべてのテーブル: \n"); while (mysqli_stmt_fetch($stmt)) { print($table_name."\n"); } //ステートメントを終了 mysqli_stmt_close($stmt); //接続を閉じる mysqli_close($con); ?>
出力結果
作成されたテーブル..... 現在のデータベース内のすべてのテーブル: test1 test2 test3