如何正确更新php中的mysql数据

时间:2010-02-17 11:54:24

标签: php mysql

我正在尝试使用更新mysql数据的html表单。现在,我有这个代码(这也是一个表单操作),我也试图将它用作我更新的表单。因为我需要这个表单显示的数据,所以用户更容易只更新他们想要更新的内容。

这是搜索数据的表单:

  <form name="form1" method="post" action="new.php">
 <td>

  <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
  <tr>
 <td colspan="16" style="background:#9ACD32; color:white; border:white 1px solid; text-align:  center"><strong><font size="3">ADMISSION INFORMATION SHEET</strong></td>
 </tr>
 <tr>

    <td width="54"><font size="3">Hospital #</td>

   <td width="3">:</td>

<td width="168"><input name="hnum" type="text" id="hospnum"></td>


    <td width="41"><font size="3">Room #</td>
   <td width="3">:</td>
   <td width="168"><input name="rnum" type="text" id="rnum"></td>


 <td width="67"><font size="3">Admission Date</td>
    <td width="3">:</td>
   <td width="168"><input name="ad8" type="text" id="ad8"></td>

    <td width="67"><font size="3">Admission Time</td>
     <td width="3">:</td>
  <td width="168"><input name="adtym" type="text" id="adtym"></td>
   </tr>
    <tr>


     <td><font size="3">Last Name</td>
<td>:</td>
<td><input name="lname" type="text" id="lname"></td>
<td><font size="3">First Name</td>
<td>:</td>
<td><input name="fname" type="text" id="fname"></td>
<td><font size="3">Middle Name</td>
<td>:</td>
<td><input name="mname" type="text" id="mname"></td>
</tr>


<tr>
<td><font size="3">Civil Status</td>
<td>:</td>
<td><input name="cs" type="text" id="cs"></td>
<td><font size="3">Age</td>
<td>:</td>
<td><input name="age" type="text" id="age"></td>
<td><font size="3">Birthday</td>
<td>:</td>
<td><input name="bday" type="text" id="bday"></td>

</tr>

<tr>
<td><font size="3">Address</td>
<td>:</td>
<td><input name="ad" type="text" id="ad"></td>
<td><font size="3">Telephone #</td>
<td>:</td>
<td><input name="telnum" type="text" id="telnum"></td>

<td width="23"><font size="3">Sex</td>
<td width="3">:</td>
<td width="174"><input name="sex" type="text" id="sex"></td>
</tr>

<tr>
<td><font size="3">Pls. Check</td>
<td>:</td>
<td><input name="stats1" type="checkbox" id="SSS" value="SSS">SSS</td>
<td><font size="3"></td>
<td>:</td>
<td><input name="stats2" type="checkbox" id="nonmed" value="NonMedicare">Non Medicare</td>

<td><font size="3"></td>
<td>:</td>
<td><input name="stats3" type="checkbox" id="sh" value="stockholder">Stockholder</td>
</tr>


<tr>
<td><font size="3"></td>
<td></td>
<td><input name="stats4" type="checkbox" id="gsis" value="GSIS">GSIS</td>
<td><font size="3"></td>
<td></td>
<td><input name="stats5" type="checkbox" id="senior" value="seniorcitizen">Senior-Citizen</td>


<tr>
<td><font size="3"></td>
<td></td>
<td><input name="stats6" type="checkbox" id="dep" value="dependent">Dependent</td>
<td><font size="3"></td>
<td></td>
<td><input name="stats7" type="checkbox" id="emp" value="employee">Employee</td>
<td><font size="3"></td>
<td></td>
<td><input name="stats8" type="text" id="" value="">Others</td>

</tr>

<tr>
<td><font size="3">Admitting/Attending Nurse</td>
<td>:</td>
<td><input name="nurse" type="text" id="nurse"></td>

</tr>






<tr>

<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Search"></td>

</form>



</tr>
</table>
</td>
</form>
</tr>
</table>

这是new.php(将根据输入的名字显示相应的数据。并且还会尝试作为更新过程的表单。

    <?php
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("Hospital", $con);

mysql_query("
    UPDATE t2
    SET HOSPNUM='" . mysql_real_escape_string($_POST['hnum']) . "',
        ROOMNUM='" . mysql_real_escape_string($_POST['rnum']) . "',
        LASTNAME='" . mysql_real_escape_string($_POST['lname']) . "',
        FIRSTNAME='" . mysql_real_escape_string($_POST['fname']) . "',
        MIDNAME='" . mysql_real_escape_string($_POST['mname']) . "',
        CSTAT='" . mysql_real_escape_string($_POST['cs']) . "',
        AGE='" . mysql_real_escape_string($_POST['age']) . "',
        BDAY='" . mysql_real_escape_string($_POST['bday']) . "',
        ADDRESS='" . mysql_real_escape_string($_POST['ad']) . "',
        STAT='" . mysql_real_escape_string($_POST['stats1']) . "',
        STAT2='" . mysql_real_escape_string($_POST['stats2']) . "',
        STAT3='" . mysql_real_escape_string($_POST['stats3']) . "',
        STAT4='" . mysql_real_escape_string($_POST['stats4']) . "',
        STAT5='" . mysql_real_escape_string($_POST['stats5']) . "',
        STAT6='" . mysql_real_escape_string($_POST['stats6']) . "',
        STAT7='" . mysql_real_escape_string($_POST['stats7']) . "',
        STAT8='" . mysql_real_escape_string($_POST['stats8']) . "',
        NURSE='" . mysql_real_escape_string($_POST['nurse']) . "',
        TELNUM=''" . mysql_real_escape_string($_POST['telnum']) . "'
    WHERE FNAME=''" . mysql_real_escape_string($_POST['fname']) . "'
");

mysql_close($con);
?>

请帮忙,我只是一个初学者,我想学习

3 个答案:

答案 0 :(得分:1)

您的表格是正确的。很少有东西丢失。

首先,您的更新查询根据错误的用户名更新记录(可能有多个记录的名字相同),因此请使用用户主键。(例如UserID)。

另一个重要的事情是在更新检查之前是请求是GET还是POST。

答案 1 :(得分:1)

为什么在SQL中的TELNUM和FNAME值之前有两个撇号?这将使值为零长度字符串,后跟垃圾,这将使查询无效。

答案 2 :(得分:0)

您正在尝试做多件事,让您的方法变得简单

  • 创建一个要求用户名字的表单
  • 然后将此名称发布到php脚本,然后根据用户名获取详细信息
  • 然后最终显示更新用户记录的页面。
  • 搜索用户名
    像这样:

    if(isset($_POST['search']))
    {
        $con = mysql_connect("localhost","root","");
          if (!$con)
           {
             die('Could not connect: ' . mysql_error());
          }
        mysql_select_db("Hospital", $con);
        $result = mysql_query("SELECT * FROM t2 WHERE FIRSTNAME='".$_POST['fname']."');
    
        $data = mysql_fetch_assoc($result);
    }
    



    用于显示记录的表格在这里

    然后将此表单发布到更新用户记录的新脚本(update.php)。 如果您遇到问题,请告诉我。