-1

我有一个页面,用户可以在其中选择多个复选框,然后提交表单,在下一页上显示他们检查的内容以及更多详细信息。但我的查询不起作用。如何将复选框数据传递给 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,布尔值

它不返回任何结果,但是如果我回显查询并将粘贴复制到 mysql 中,我会得到结果,但是从 PHP 运行时,我只会得到错误。

任何帮助将不胜感激

4

2 回答 2

-1

更新版本的代码以在查询中显示错误消息(如果有)。还清理输入

<?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);
}

?>

希望这应该发出查询有什么问题的消息。

于 2013-04-17T13:44:45.667 回答
-4

$c好像不是 PHP 数组,所以这里不能内爆

于 2013-04-17T13:09:05.273 回答