PHP MySQLi フェッチ配列関数をループする

Mehvish Ashiq 2023年1月30日
  1. mysqli_fetch_array() 関数の反復
  2. まとめ
PHP MySQLi フェッチ配列関数をループする

MySQLi フェッチ関数は、データベースサーバーからのデータにアクセスするために使用されます。データをフェッチした後、MySQLi クエリを反復処理することもできます。

この記事では、mysqli_fetch_array() 関数の使用法と、アクセスされたデータを反復処理する方法について説明します。

この拡張機能は PHP バージョン 5.0.0 で導入され、設計の目的は MySQL バージョン 4.1.13 以降で動作することです。このチュートリアルでは、PHP バージョン 7.4.1 と phpMyAdmin を使用しています。

XAMPP は公式ウェブサイトからダウンロードできます。(XAMPP を使用している場合は、MySQL と PHP を別々にインストールする必要はありません)。

mysqli_fetch_array() 関数の反復

mysqli_fetch_array() は、最初のパラメーターとして $result を使用してデータベースから現在の行のデータを取得し、連想配列、数値配列、またはその両方として出力を保存するために使用されます(2 番目のパラメーターによって異なります)。現在、学生のデータベースには次のデータがあります。

ループ mysqli フェッチ配列関数-データ

MYSQLI_NUM モードを使用した mysqli_fetch_array() 関数

mysqli_fetch_array() 関数を使用して、db_students という名前の学生のデータベースからデータを読み取る次のプログラムを作成してみましょう。次のコードはデータベースに接続し、失敗した場合は失敗メッセージを表示します。

データベースとの接続が成功すると、mysqli_query 関数を使用してレコードが読み取られ、$result 変数に保存されます。mysqli_fetch_array() は、その結果変数と MYSQLI_NUMmysqli_fetch_row() 関数のように動作します)をパラメーターとして受け取り、現在の行をインデックスが 0 から n-1 までの数字の配列として表示します。

サンプルコード:

<?php
	$host = "localhost";
    $username = "root";
    $password = "";
	$database = "db_students";
	$connection = mysqli_connect($host, $username, $password, $database); 
   
    if (mysqli_connect_errno()) {
        echo "Database connection failed."; 
    }

    $sql = "SELECT * FROM tb_students";
	$result = mysqli_query($connection, $sql);
    $row = mysqli_fetch_array($result,MYSQLI_NUM);
    print_r($row)
?>

出力:

loop mysqli fetcharray 関数-mysqli_num モードを使用してデータをフェッチします

MYSQLI_ASSOC モードを使用した mysqli_fetch_array() 関数

ここで、mysqli_fetch_array() 関数はパラメータ MYSQLI_ASSOC により mysqli_fetch_assoc() のように動作し、テーブルの列名は配列のインデックスとして表示されます。次のコードを練習して、出力を観察します。

サンプルコード:

<?php
	
    $host = "localhost";
    $username = "root";
    $password = "";
	$database = "db_students";
	$connection = mysqli_connect($host, $username, $password, $database); 
   
    if (mysqli_connect_errno()) {
        echo "Database connection failed."; 
    }

    $sql = "SELECT * FROM tb_students";
	$result = mysqli_query($connection, $sql);
    $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
    print_r($row)
?>

出力:

loop mysqli fetcharray 関数-mysqli_assoc モードを使用してデータをフェッチします

MYSQLI_BOTH モードを使用した mysqli_fetch_array() 関数

パラメータ MYSQLI_BOTH を指定して mysqli_fetch_array() 関数を使用すると、列名と列インデックスを使用してアクセスできる配列にデータが格納されます。次のコードを練習して、出力を確認してください。

サンプルコード:

<?php
    $host = "localhost";
    $username = "root";
    $password = "";
    $database = "db_students";
    $connection = mysqli_connect($host, $username, $password, $database); 

    if (mysqli_connect_errno()) {
        echo "Database connection failed."; 
    }

    $sql = "SELECT * FROM tb_students";
    $result = mysqli_query($connection, $sql);
    $row = mysqli_fetch_array($result,MYSQLI_BOTH);
    print_r($row)
?>

出力:

loop mysqli fetcharray 関数-mysqli_both モードを使用してデータをフェッチします

ループオーバーmysqli_fetch_array() 関数

次のコードを使用して、mysqli_query を反復処理し、出力を生徒のテーブルレコードと比較します。

mysqli_fetch_array()MYSQLI_ASSOCMYSQLI_NUM、および MYSQLI_BOTH のすべてのモードをループできることに注意してください。mysqli_fetch_array() を使用している間は、パラメータとして渡す必要があります。

<?php
    $host = "localhost";
    $username = "root";
    $password = "";
	$database = "db_students";
	$connection = mysqli_connect($host, $username, $password, $database); 
   
    if (mysqli_connect_errno()) {
        echo "Database connection failed."; 
    }

    $sql = "SELECT * FROM tb_students";
	$result = mysqli_query($connection, $sql);
        
    $std_num=0;
    while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
        echo "Student Number ".$std_num."<br>";
        echo "ID: ".$row['ID']."<br>";
        echo "First Name: ".$row['FIRST_NAME']."<br>";
        echo "Last Name: ".$row['LAST_NAME']."<br>";
        echo "Age: ".$row['AGE']."<br>";
        echo "<br><br>";
    	$std_num++;
    }
?>

出力:

ループ mysqli フェッチ配列関数-ループ

IDFIRST_NAMELAST_NAMEAGE を確認して、tb_students という名前の次のテーブルと比較できます。

ループ mysqli フェッチ配列関数-データ

まとめ

上記の説明では、mysqli_fetch_array() 関数がデータベースからデータを取得するのに役立つと結論付けました。

ニーズと要件に応じて、列インデックスまたは列名、あるいはその両方を介して値にアクセスするかどうかにかかわらず、その出力モードを使用できます。次に、結果をループして、テーブルの各レコードを確認できます。

著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - MySQL PHP