0

これが私のコードです:

$user = $_SESSION['uname'];
echo $user;
$output=mysqli_query($con,"SELECT pedia_id FROM users WHERE uname = $user");
echo $output;
$result = mysqli_query($con,"SELECT * FROM infant_info where pedia_number = $output ORDER BY last_name ASC");

それはエコーします$userが、そうではなく$output、エラーが発生しました:

警告: mysqli_fetch_array() は、パラメーター 1 が mysqli_result であることを想定しています。ブール値は C:\xampp\htdocs\Infant\view\InfantInfo_table.php の 69 行目に指定されています

4

1 に答える 1

1

$user を引用符で囲む必要があります。

"SELECT pedia_id FROM users WHERE `uname` = '".$user."'"

また、 mysql_query はmysqli_resultを返します。$output から pedia_id を取得し、次のクエリで使用する必要があります。

$row = mysqli_fetch_array($output);

$output の代わりに、次のクエリで $row[0] を使用するようになりました。引用符で囲みます。

$user = $_SESSION['uname'];
echo $user;
$output=mysqli_query($con,"SELECT pedia_id FROM users WHERE uname = '" . $user . "'");
echo $output;  //its mysqli_result object
//Fetch the row from the result
$row = mysqli_fetch_array($output);
echo $row[0];  //this is pedia_id
$pedia_id = $row[0];  //wrap it in quotes if its a string
$result = mysqli_query($con,"SELECT * FROM infant_info where pedia_number = $pedia_id ORDER BY last_name ASC");

while($infantRow = mysqli_fetch_array($result))
{
   //do something here with individual infant_info row
}

EDIT : $user の文字列値に引用符があると仮定します。そのような場合、それもエスケープする必要があります。一般に、クエリの作成に使用される値をサニタイズすることは、ベスト プラクティスと見なされます。または、 Prepared Statementsを使用できます。

于 2013-10-08T20:45:51.650 に答える