ホームページ >バックエンド開発 >PHPチュートリアル >「未定義メソッド mysqli_stmt::get_result() への呼び出し」エラーが発生するのはなぜですか?

「未定義メソッド mysqli_stmt::get_result() への呼び出し」エラーが発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-26 10:42:15611ブラウズ

Why am I getting a

「mysqli_stmt::get_result()」メソッド呼び出し未定義の問題

「mysqli_stmt」から「get_result()」メソッドを使用しようとしているときオブジェクト内のクエリ結果を取得する場合、「未定義のメソッドを呼び出します」と表示されます。 mysqli_stmt::get_result()」エラー。

問題の原因:

このエラーは、「get_result()」メソッドが「mysqli_stmt」オブジェクトで使用できないことを示しています。これは、「mysqlnd」ドライバーが欠落していることが原因である可能性があります。

解決策:

  1. mysqlnd ドライバーをインストールします:

    このドライバーは、「 get_result 」を使用する場合に役立ちます。 ()」メソッドが重要です。 Web スペースにインストールされていることを確認してください。

  2. bind_result() と fetch() を使用します。

    「mysqlnd」ドライバーをインストールできない場合は、「bind_result()」を使用できます。 」および「fetch()」メソッドを使用してクエリ結果を取得します。これらのメソッドは、「mysqlnd」ドライバーの影響を受けません。サンプルコードは次のとおりです。

$stmt->bind_result($emailVerified, $blocked);
$stmt->fetch();
  1. Check mysqli_stmt->execute()戻り値:

    「mysqli_stmt->execute()」メソッドが正常に実行されたことを確認します。 「false」を返した場合、「stmt」オブジェクトには結果は設定されません。

例:

問題を解決した修正コードは次のとおりです:

include 'conn.php';
$conn = new Connection();
$query = 'SELECT EmailVerified, Blocked FROM users WHERE Email = ? AND SLA = ? AND `Password` = ?';
$stmt = $conn->mysqli->prepare($query);
$stmt->bind_param('sss', $_POST['EmailID'], $_POST['SLA'], $_POST['Password']);

if ($stmt->execute()) {
    $stmt->bind_result($emailVerified, $blocked);
    $stmt->fetch();
    // Use $emailVerified and $blocked here...
} else {
    echo "Error executing statement: " . $stmt->error;
}

以上が「未定義メソッド mysqli_stmt::get_result() への呼び出し」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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