-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 に答える