这是我的代码,我不知道为什么在我尝试更新mysql数据库时没有更新复选框。只有输入框正在更新。
<tr>
<td><font size="3"></td>
<td></td>
<input type='hidden' name="stats6" value="0">
<td><input name="stats6" type="checkbox" id="dep" value="<?php echo $row["STAT6"]; ?>" <?php echo $row["STAT6"] ? 'checked="checked"' : ''; ?> >Dependent</td>
<td><font size="3"></td>
<td></td>
<input type='hidden' name="stats7" value="0">
<td><input name="stats7" type="checkbox" id="emp" value="<?php echo $row["STAT7"]; ?>" <?php echo $row["STAT7"] ? 'checked="checked"' : ''; ?> >Employee</td>
<td><font size="3"></td>
<td></td>
<input type='hidden' name="stats8" value="0">
<td><input name="stats8" type="text" id="" value="<?php echo $row["STAT8"]; ?>" maxlength="15">Others</td>
这是表单行动:
mysql_select_db("Hospital", $con);
mysql_query("UPDATE t2 SET HOSPNUM ='$_POST[hnum]', ROOMNUM='$_POST[rnum]', ADATE='$_POST[adate]', ADTIME='$_POST[adtime]', LASTNAME='$_POST[lname]', FIRSTNAME='$_POST[fname]', MIDNAME='$_POST[mname]', CSTAT='$_POST[cs]', AGE='$_POST[age]', BDAY='$_POST[bday]', ADDRESS='$_POST[ad]', SEX='$_POST[sex]',
STAT='$_POST[stats1]', STAT2='$_POST[stats2]', STAT3='$_POST[stats3]', STAT4='$_POST[stats4]', STAT5='$_POST[stats5]', STAT6='$_POST[stats6]', STAT7='$_POST[stats7]', STAT8='$_POST[stats8]', NURSE='$_POST[nurse]'
WHERE PNUM ='$_POST[pnum]'");
我的代码可能有什么问题?它并没有真正更新复选框中的数据。当我尝试搜索它时,全部为零
答案 0 :(得分:0)
可能每个复选框的隐藏输入都需要位于标签后面。我不记得PHP如何处理重复项,但这可能是问题所在。
但是,另一个说明。 我希望代码只是例如,你应该永远将数据从输入直接放入数据库,而不事先进行消毒和验证。这样做会打开SQL注入的可能性。
答案 1 :(得分:0)
首先,建议使用$ _POST [“hnum”]而不是$ _POST [hnum]。猜猜这是一个错字。
真正的问题。复选框值仅在选中时设置。如果没有选中它们,就没有像$ _POST [“hnum”]这样的值。也许这是你问题的一部分。
答案 2 :(得分:0)
你有很多问题。以下是一些关键问题:
您的HTML无效。您在表格单元格之间有<input>
个元素。使用validator。
您有多个具有相同名称的输入(例如<input type='hidden' name="stats6" value="0">
和<input name="stats6" type="checkbox"
)和:
[]
命名它们(这只是PHP中的一个问题)PHP,IIRC,使用它遇到的第一个'foo'的值来填充$ _POST ['foo']。
看起来您正在尝试使用默认值,以防复选框不存在。如果是这样,完全用PHP处理。不要向表单添加隐藏的输入。
答案 3 :(得分:-1)
你的Html是正确的,问题在于你的SQL
我刚刚对您的查询进行了更正尝试,
$sql = "UPDATE t2 SET ";
$sql .= "HOSPNUM ='".$_POST['hnum']."', ";
$sql .= "ROOMNUM ='".$_POST['rnum']."', ";
$sql .= "ADATE ='".$_POST['adate']."', ";
$sql .= "ADTIME ='".$_POST['adtime']."', ";
$sql .= "LASTNAME ='".$_POST['lname']."', ";
$sql .= "FIRSTNAME ='".$_POST['fname']."', ";
$sql .= "MIDNAME ='".$_POST['mname']."', ";
$sql .= "CSTAT ='".$_POST['cs']."', ";
$sql .= "AGE ='".$_POST['age']."', ";
$sql .= "BDAY ='".$_POST['bday']."', ";
$sql .= "ADDRESS ='".$_POST['ad']."', ";
$sql .= "SEX ='".$_POST['sex']."', ";
$sql .= "STAT ='".$_POST['stats1']."', ";
$sql .= "STAT2 ='".$_POST['stats2']."', ";
$sql .= "STAT3 ='".$_POST['stats3']."', ";
$sql .= "STAT4 ='".$_POST['stats4']."', ";
$sql .= "STAT5 ='".$_POST['stats5']."', ";
$sql .= "STAT6 ='".$_POST['stats6']."', ";
$sql .= "STAT7 ='".$_POST['stats7']."', ";
$sql .= "STAT8 ='".$_POST['stats8']."', ";
$sql .= "NURSE ='".$_POST['nurse']."'";
$sql .= "WHERE PNUM ='".$_POST['pnum']."'";
mysql_query($sql);
你忘了把“'”放在帖子值
中例如,$_POST[stats1]
应为$_POST['stats1']
试一试