【发布时间】:2016-07-01 03:43:44
【问题描述】:
我正在尝试从数据库中生成一个带有多个复选框的表单。现在只显示数组中的最后一个条目。如果应该只检查一件事,它可以工作,但对于不止一个,只有数组中的最后一个条目显示为已检查。任何帮助将不胜感激。谢谢!
<?php
include "DBconnect.php";
$staffId = $_REQUEST["ID"];
$query=" select listCode from staffLabels
where staffId = $staffId";
$result=$mysql->query($query);
while($row=$result->fetch_assoc()){
//in_array ()check if value is in array
$b_checked='';
$d_checked='';
$x_checked='';
$f_checked='';
$c_checked='';
if($row['listCode'] =="b") {$b_checked='checked';}
elseif($row['listCode'] =="d") {$d_checked='checked';}
elseif($row['listCode'] =="x") {$x_checked='checked';}
elseif($row['listCode'] =="f") {$f_checked='checked';}
elseif($row['listCode'] =="c") {$c_checked='checked';}
}
echo '<input type="checkbox" name="listCode[]" value="b" '.$b_checked.' >b';
echo '<input type="checkbox" name="listCode[]" value="d" '.$d_checked.' >d';
echo '<input type="checkbox" name="listCode[]" value="x" '.$x_checked.' >x';
echo '<input type="checkbox" name="listCode[]" value="f" '.$f_checked.' >f';
echo '<input type="checkbox" name="listCode[]" value="c" '.$c_checked.' >c<br /><br />';
?>
【问题讨论】:
-
尝试从
while中删除“声明”。每个循环都会擦除变量的先前内容,只保留最后一个... -
但是,有更好的方法来做你想做的事情......
-
您对SQL Injections 敞开心扉。如果您使用的是 MySQLi 或 PDO(由于
mysql_*-functions 已弃用,您应该使用它),您应该使用 Prepared Statements -
或者至少,
$staffId = $_REQUEST["ID"] + 0;将$staffId强制为数值。 -
@FirstOne 取出声明有效!谢谢!我愿意以不同的方式来做这件事,我只是 PHP 新手,真的不知道该怎么做。
标签: php arrays database checkbox while-loop