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

「mysqli_query()」が「警告: mysqli_query() はパラメータ 1 が mysqli であることを期待しています。null が指定されています」というエラーを返すのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-05 00:53:14
オリジナル
261 人が閲覧しました

Why does `mysqli_query()` return a

警告: mysqli_query() パラメーターのエラーについて

PHP で mysqli_query() を使用する場合、最初のパラメーターがデータベース接続を表す有効な mysqli オブジェクト。ただし、「警告: mysqli_query() はパラメーター 1 が mysqli であることを期待しており、null が指定されています」というエラーが発生した場合は、関数に渡された最初のパラメーターが mysqli オブジェクトではないことを示します。

コードの調査

提供されたコードには、getPosts() という関数があります。この関数は、Blog という名前のデータベース テーブルにクエリを実行しようとします。ただし、getPosts() 内の mysqli_query() 呼び出しでは、最初のパラメーターは明示的に渡されません。その結果、PHP は関数の外で宣言された $con の値を最初のパラメーターとして想定します。ただし、$con は getPosts() のスコープ内にないため、null を返します。

エラーの解決

この問題を解決するには、次の 2 つのオプションがあります。

  1. **$con 変数をグローバル化します:** $con 変数を内部でグローバルにすることができますgetPosts() はグローバル $con を使用します。宣言。これにより、関数の外で $con を探すように PHP に指示され、getPosts() 内でアクセスできるようになります。
  2. **$con 変数をパラメーターとして渡します:** より良い方法は、$con オブジェクトを渡すことです。 getPosts() 関数のパラメータとして。これにより、getPosts() がデータベース接続に直接アクセスできるようになり、グローバル スコープが不要になります。

例:

function getPosts(mysqli $con) {
    // ... same code as before
}

// Connect to the database
$con = mysqli_connect("localhost", "xxxx", "xxxx", "xxxxx");
// Call getPosts() with the connection as a parameter
getPosts($con);
ログイン後にコピー

追加の推奨事項

データベース中に発生する可能性のある潜在的なエラーを処理することもお勧めします。操作。次のようにエラー レポートを明示的に有効にできます。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions
ログイン後にコピー

これにより、エラーが発生した場合に例外がスローされ、コード内で適切なアクションを実行できるようになります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート