現在の位置: ホーム> 最新記事一覧> mysqli_resultのすべてのデータを2D配列に変換します

mysqli_resultのすべてのデータを2D配列に変換します

M66 2025-05-28

PHPとMySQLを使用してアプリケーションを開発する場合、 MySQLIを使用してデータベースクエリを実行することがよくあります。 Selectステートメントを実行した後、 mysqli_query()はmysqli_resultオブジェクトを返しますが、このオブジェクトは直接利用可能な配列形式ではありません。データをより簡単に処理するには、通常、クエリの結果を2次元配列に完全に変換する必要があります。

以下は特定の実装方法です。

コアコード

mysqli_fetch_all()を使用してすべての行を一度に取得できますが、この関数には少なくともphp 5.3以上が必要であることに注意してください。以前のバージョンと互換性がある場合は、 mysqli_fetch_assoc()をループと組み合わせて使用​​できます。

mysqli_fetch_all()を使用する例は次のとおりです。

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

// 接続を確認してください
if ($mysqli->connect_error) {
    die("接続に失敗しました: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM your_table";
$result = $mysqli->query($sql);

if ($result) {
    // MYSQLI_ASSOC 連想配列が返されることを示します
    $data = $result->fetch_all(MYSQLI_ASSOC);
    print_r($data);
} else {
    echo "クエリに失敗しました: " . $mysqli->error;
}

$mysqli->close();
?>

より良い互換性を備えたより良いサイクリング方法

PHPの以前のバージョンと互換性がある場合は、時間のループを使用することをお勧めします。

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("接続に失敗しました: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM your_table";
$result = $mysqli->query($sql);

$data = [];
if ($result) {
    while ($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
    print_r($data);
} else {
    echo "クエリに失敗しました: " . $mysqli->error;
}

$mysqli->close();
?>

関数にカプセル化されています

より良い再利用のために、それを関数にカプセル化することもできます:

 <?php
function fetchAllResults($mysqli, $query) {
    $result = $mysqli->query($query);
    $data = [];
    if ($result) {
        while ($row = $result->fetch_assoc()) {
            $data[] = $row;
        }
    }
    return $data;
}

$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("接続に失敗しました: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM your_table";
$data = fetchAllResults($mysqli, $sql);
print_r($data);

$mysqli->close();
?>

注意すべきこと

  1. セキュリティ:SQL注入を防ぐために、外部入力データに前処理ステートメント(準備)を使用することを忘れないでください。

  2. パフォーマンス:一度に大量のデータを取り出すと、多くのメモリが得られる場合があります。データボリュームが大きい場合は、クエリのページを組み合わせることをお勧めします。

  3. エラー処理:クエリが失敗したときに$ resultがfalseであるかどうかを常に確認して、後続のコードを実行し続けることを避けます。

サンプルURL

使用するインターフェイスが次のとおりです。