1. ホーム
  2. php

[解決済み] 警告: mysqli_query() はパラメータ 1 を mysqli と想定していますが、NULL は

2022-02-05 16:05:40

質問

簡単なカスタムCMSを構築しようとしているのですが、エラーが発生します。

Warning: mysqli_query() expects parameter 1 to be MySQLi, null given in.

なぜこのようなエラーが発生するのでしょうか?私のコードはすべてすでにMySQLiであり、1つではなく2つのパラメータを使用しています。

$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx");

//check connection
if (mysqli_connect_errno($con))
{
    echo "Failed to connect to MySQL:" . mysqli_connect_error();
}

function getPosts() {
    $query = mysqli_query($con,"SELECT * FROM Blog");
    while($row = mysqli_fetch_array($query))
    {
        echo "<div class=\"blogsnippet\">";
        echo "<h4>" . $row['Title'] . "</h4>" . $row['SubHeading'];
        echo "</div>";
    }
}

解決方法は?

コメントにもあるように、これはスコープの問題です。具体的には $con は、あなたの getPosts 関数を使用します。

接続オブジェクトを依存関係として渡す必要があります。

function getPosts(mysqli $con) {
    // etc

また、接続に失敗した場合やエラーが発生した場合は、実行を停止することを強くお勧めします。以下のようにすれば十分でしょう。

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

getPosts($con);