ホームページ >バックエンド開発 >PHPチュートリアル >`mysqli_query()` 関数が MySQLi 接続オブジェクトではなく Null 値を受け取るのはなぜですか?

`mysqli_query()` 関数が MySQLi 接続オブジェクトではなく Null 値を受け取るのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-28 00:26:10828ブラウズ

Why Does My `mysqli_query()` Function Receive a Null Value Instead of a MySQLi Connection Object?

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

カスタム CMS を作成する探求、「警告: mysqli_query() にはパラメータが必要です」という恐ろしいエラー メッセージが表示された可能性があります。 1 は MySQLi になり、null が指定されます。」このイライラする問題は、多くの場合、PHP 関数内の変数のスコープに関する誤解から発生します。

エラーの原因

このエラーは、getPosts() 関数が試行していることを示唆しています。 MySQLi 接続オブジェクトを格納する $con 変数にアクセスしますが、その関数のスコープ内ではアクセスできません。これは、$con が getPosts() 関数の外部で定義されているためです。

解決策: 接続を依存関係として渡す

この問題を解決するには、 getPosts() 関数への接続オブジェクトを依存関係として追加します。これにより、関数は接続にアクセスし、必要なデータベース操作を実行できます。

function getPosts(mysqli $con) {
    // Code to query the database using $con
}

さらなるエラーの防止

潜在的な問題を最小限に抑えるには、次の使用を検討してください。接続エラーを処理し、例外をスローするコード:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions
$con = mysqli_connect("localhost", "xxxx", "xxxx", "xxxxx");

getPosts($con);

追加ヒント

  • mysqli オブジェクトを直接使用する: mysqli_query() の使用を避け、$con->query() などの mysqli オブジェクトのメソッドを直接選択します。
  • 例外の処理:意味のあるエラー メッセージを提供するために、mysqli オブジェクトによってスローされた例外を try...catch ブロックを使用して処理することを忘れないでください。
  • 接続の破棄: 接続が完了したら、次を使用して接続を閉じます。 $con->close() メソッドを使用してリソースを解放します。

以上が`mysqli_query()` 関数が MySQLi 接続オブジェクトではなく Null 値を受け取るのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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