English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHPベーシックチュートリアル

PHPハイレベルチュートリアル

PHP & MySQL

PHPリファレンスマニュアル

PHP mysqli_stmt_fetch()関数の使用法と例

PHP MySQLi 参考マニュアル

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バージョン

この関数は最初に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

PHP MySQLi 参考マニュアル