1. ホーム
  2. php

[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。

2022-01-26 06:11:48

質問

私はPHPとMySQLのかなり初心者なのですが、この件がどうしても分かりません。フォーラムをくまなく探しましたが、私が理解できる答えは見つかりませんでした。私はもともとmysql_fetch_assoc()を使用していましたが、私は数字しか検索できず、文字も検索するとエラーが発生しました。私はここで正しい道を歩んでいることを望みます。あなたの助けのすべてに前もって感謝します!

$con = mysqli_connect($hostname,$username,$password) or die ("<script language='javascript'>alert('Unable to connect to database')</script>");
mysqli_select_db($con, $dbname);

if (isset($_GET['part'])){
    $partid = $_GET['part'];
    $sql = 'SELECT * 
        FROM $usertable 
        WHERE PartNumber = $partid';

    $result = mysqli_query($con, $sql);
    $row = mysqli_fetch_assoc($result);

    $partnumber = $partid;
    $nsn = $row["NSN"];
    $description = $row["Description"];
    $quantity = $row["Quantity"];
    $condition = $row["Conditio"];
}

解決方法は?

これは、結果が結果でない(代わりに "false" がある)ときに発生します。 次の行を変更する必要があります。

$sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid';

をこれに変更します。

$sql = "SELECT * FROM $usertable WHERE PartNumber = $partid";

は $variables を解釈することができますが、' はできないからです。

整数(数字)の場合はうまくいきますが、文字列の場合は $variable をシングルクォートで囲む必要があります。

$sql = "SELECT * FROM $usertable WHERE PartNumber = '$partid' ";

シングルクォートを使用する場合、php は変数を解釈できないので、以下のようにします。

 $sql = 'SELECT * FROM '.$usertable.' WHERE string_column = "'.$string.'" AND integer_column = '.$number.';