ホームページ >バックエンド開発 >PHPチュートリアル >なぜ `mysqli_query()` は「パラメータ 1 が mysqli であることを期待しており、null が指定されている」を返すのでしょうか?

なぜ `mysqli_query()` は「パラメータ 1 が mysqli であることを期待しており、null が指定されている」を返すのでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-15 00:58:17339ブラウズ

Why Does `mysqli_query()` Return

警告: mysqli_query() はパラメーター 1 が mysqli であることを期待しており、null が指定されている

このエラーは、mysqli_query を使用して MySQL クエリを実行しようとすると発生します。 () ですが、接続オブジェクトに指定されたパラメータは有効な MySQLi オブジェクトではありません。 mysqli_query() 関数は、最初のパラメータが mysqli クラスのインスタンスであることを想定しています。

提供されたコード スニペットでは、エラーは次の理由で発生する可能性があります:

スコープの問題

グローバル スコープで宣言されている mysqli 接続オブジェクト $con は、 getPosts() 関数内でアクセスできます。これにより、null 値が最初のパラメータとして mysqli_query() に渡され、エラーが発生します。

解決策:

この問題を明示的に解決するには、次のようにします。接続オブジェクトを getPosts() 関数にパラメータとして渡します。変更されたコードは次のとおりです。

function getPosts(mysqli $con) {
    $query = mysqli_query($con, "SELECT * FROM Blog");
    // ... Rest of the code remains the same
}

getPosts() 関数を呼び出すときは、必ず接続オブジェクトを引数として渡します。

さらに、有効にすることをお勧めします。エラーを報告し、データベース接続の問題を適切に処理します。以下に例を示します:

// Enable error reporting
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

// Establish database connection
$con = mysqli_connect("localhost", "xxxx", "xxxx", "xxxxx");

// Check connection status
if (!$con) {
    throw new Exception('Failed to connect to MySQL: ' . mysqli_connect_error());
}

// Call the getPosts() function with the connection object
getPosts($con);

以上がなぜ `mysqli_query()` は「パラメータ 1 が mysqli であることを期待しており、null が指定されている」を返すのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。