Cannot use object of type mysqli_resultの解決方法【2025年最新版】

“Cannot use object of type mysqli_result” エラー解決ガイド

エラーの概要・症状

「Cannot use object of type mysqli_result」というエラーメッセージは、PHPのMySQLi拡張を使用してデータベースからデータを取得する際に発生します。このエラーは、mysqli_resultオブジェクトを配列として使用しようとした場合に発生します。具体的には、mysqliのクエリ結果を配列のように扱おうとすることが原因です。

例えば、次のようなコードがあるとします。

$result = $mysqli->query("SELECT * FROM users");
echo $result['username'];  // ここでエラーが発生します

上記のコードでは、$resultmysqli_resultオブジェクトですが、配列のように扱おうとしているため、エラーが発生します。

このエラーが発生する原因

このエラーが発生する主な原因は、MySQLiのクエリ結果を正しく処理せずに直接アクセスしようとすることです。mysqli_resultオブジェクトは、データベースからの結果セットを表しますが、配列ではありません。そのため、配列のようにインデックスでアクセスするとエラーになります。

以下のような操作を行った場合にエラーが発生します。
$result['column_name']のように、オブジェクトに対して配列アクセスを行う。
foreachループで、mysqli_resultオブジェクトを直接イテレートしようとする。

解決方法

このエラーを解決するためには、mysqli_fetch_assoc()mysqli_fetch_array()などの関数を使用して、mysqli_resultオブジェクトからデータを取得し、配列として扱う必要があります。以下にいくつかの解決方法を示します。

解決方法 1: mysqli_fetch_assoc()を使用する

mysqli_fetch_assoc()関数を使用して、結果セットから行を取得し、連想配列として返します。

  1. クエリを実行します。
    php
    $result = $mysqli->query("SELECT * FROM users");
  2. データを取得し、表示します。
    “`php
    while ($row = mysqli_fetch_assoc($result))

コメント

タイトルとURLをコピーしました