我有一个页面,用户可以选择多个复选框,然后提交表单,在下一页显示他们检查的内容以及更多详细信息。但我的查询不起作用。如何将复选框数据传递给mysql查询以获取其余数据。
这是我的疑问:
$c=$_POST['select'];
$result=mysqli_query($con, 'SELECT * FROM item WHERE item_number IN ("'.implode('","', $c).'")');
echo "<table border='1'>
<tr>
<th>item name</th>
<th>item number</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['item_name'] . "</td>";
echo "<td>" . $row['item_number'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
运行查询时出现此错误:
警告:mysqli_fetch_array()期望参数1为mysqli_result,boolean given
它没有返回结果但是如果我回显查询并将粘贴复制到mysql中我得到了结果,但是从PHP运行时我只得到错误。
任何帮助将不胜感激
答案 0 :(得分:0)
更新了您的代码版本,以便在查询中输出错误消息(如果有)。还要清理输入
<?php
if (is_array($_POST['select']))
{
$c = array_map('array_map_callback', $_POST['select']);
$result = mysqli_query($con, 'SELECT item_name, item_number FROM item WHERE item_number IN ("'.implode('","', $c).'")') OR die(mysqli_error($con));
echo "<table border='1'>
<tr>
<th>item name</th>
<th>item number</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['item_name'] . "</td>";
echo "<td>" . $row['item_number'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
}
else
{
echo "No items selected";
}
function array_map_callback($a)
{
global $con;
return mysqli_real_escape_string($con, $a);
}
?>
希望这应该传达出查询错误的信息。
答案 1 :(得分:-4)
$ c 似乎不是PHP数组,所以它不能在这里被破坏