问题更新mysql数据库中的html复选框

时间:2010-03-01 12:26:03

标签: php mysql html

这是我的代码,我不知道为什么在我尝试更新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]'");

我的代码可能有什么问题?它并没有真正更新复选框中的数据。当我尝试搜索它时,全部为零

4 个答案:

答案 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中的一个问题)

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']

试一试