我从数据库中打印出了这个复选框列表。如果用户使用多个复选框并将其显示在表中,我可以从数据库中检索数据,但我无法从数据库中检索其他信息并将其显示在同一个表中。
这是我的代码:
<table border='1'>
<tr>
<th>TITLE</th>
<th>PERCENTAGE RESULT</th>
</tr>
<?php
if(isset ($_POST["submit1"]))
{
$selectedcheckbox = $_POST["selectedcheck"];
$query = "SELECT * FROM compareresult where subject=$selectedcheckbox";
$sql_query = mysql_query($query) or die('Error 3 :'.mysql_error());
while($data = mysql_fetch_array($sql_query,MYSQL_ASSOC)){
$result=$data['result'];
}
foreach($selectedcheckbox as $title)
{
echo "<tr>";
echo "<td>".$title."</td>";
echo "<td>".$result."</td>";
}
echo "</tr>";
}
?>
我想在用户选择多个复选框后显示结果,所以我写道:
echo $result in table
以便结果可以显示在所选标题旁边的表格中,但是我收到错误:
第31行的C:\ xampp \ htdocs \ sam \ c.php中的数组到字符串转换错误3:'where子句'中的未知列'Array'
答案 0 :(得分:2)
我现在不是在环境中来测试你的问题,而是我从头脑中做到这一点,但尝试类似下面的内容。
if(isset($_POST['submit1'])){
$checkbox = isset($_POST['selectedcheck']) ? $_POST['selectedcheck'] : array();
foreach($checkbox as $title){
$query = "SELECT * FROM compareresult where subject='".$title."'";
$result=mysql_query($query); // <-- to avoid SQL injections, please change your method from mysql_query to mysqli_query (use the mysqli functions instead of mysql)
while($data = mysql_fetch_array($result)){
$result=$data['result'];
echo "<tr>";
echo "<td>".$title."</td>";
echo "<td>".$result."</td>";
echo "</tr>
}
}
}
首先检查您的复选框是否已选中,是否将它们放入数组中。 然后它运行foreach语句,它将复选框值设置为标题。如果查询标题是否在数据库中,它会在那里运行,如果是,则通过while循环将其吐出。冲洗并重复直至完成。
修改强>
我看到你把你的开放式tablerow声明放在foreach中但是在外面关闭它。所以要么你想要将它们全部印在一行上,要么是错误的?如果它在一行上,请确保在while循环之前打开表格行并在之后结束它,否则它就像我吐出的那样。