MYSQL查询WHERE php数组

时间:2013-04-17 13:05:01

标签: php mysql

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

任何帮助将不胜感激

2 个答案:

答案 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数组,所以它不能在这里被破坏