如何保留MySQL行并进行更新

时间:2012-01-18 05:01:20

标签: php javascript mysql ajax

我被问到一个我不确定如何完成的功能。有一个输入电话号码的表单页面 - 我需要将该电话号码放在按钮提交的一行中,并在大约5-10分钟后以相同的形式填写其余选项并更新同一行。不知道该怎么做。我当时想使用mysql_insert_id()/ last_insert_id()..

“>

<?php
$hostname = "*";
$username = "*";
$password = "*";
$EmpID = $_COOKIE["dsmkttrackerid"];
mysql_connect($hostname, $username, $password) or die(mysql_error());
mysql_select_db("*");
$sql="SELECT * FROM User WHERE EmpID='".$EmpID."'";
$r = mysql_query($sql);
if(mysql_affected_rows()==0){
}
else {
   $row = mysql_fetch_array($r);
   $NT_Login = $row['NT_Login']; 
   $Job = $row['Job']; 
   if ($Job == "MADMIN" || $Job == "ADMIN" || $Job == "MPLT") {
      $Pilot=true;
   }
}
date_default_timezone_set('America/Chicago');
$date = date("Y-m-d",time());
$time = date("H:i:s",time());
if ($_POST[Comment]) {
   $_POST[Comment] = mysql_real_escape_string($_POST[Comment]);
   $PHONE = mysql_real_escape_string($_POST[PHONE]);
   //check if dup post, caused by refreshing page.
   $sql="Select * from Data where Comment='$_POST[Comment]'";
   if (mysql_num_rows(mysql_query($sql)) <1) {
      $sql="INSERT INTO Data(`Date`, `Time`, `EmpID`, `PHONE`, `Comment`, 
      `OrigMention`, `OrigSent`, `PostMention`, `Mod`, `Pilot`)
      VALUES('$date','$time','$_POST[EmpID]','$_POST[PHONE]','$_POST[Comment]',
      '$_POST[OrigMention]','$_POST[OrigSent]','$_POST[PostMention]',
      '$_POST[Mod]','$_POST[Pilot]')";
      if (!mysql_query($sql))
      {
          die('Please report this error to your supervisor: <br />'
             . mysql_error());
      }
      else {
         $Msg = "Post #".mysql_insert_id()." Tracked Successfully.";
      }
   }
   else {
      //if dup is found:
      $Msg ="Duplicate Entry Detected.";
   }
}
else {
   //if no post was sent to the server:
   $Msg ="";
}
?>    

2 个答案:

答案 0 :(得分:0)

使用mysql_insert_id()获取ID,就像您一样。将其存储在会话中,您可以将其引用到表单的其余部分。

答案 1 :(得分:0)

正如tandu所说,你可以使用mysql_insert_id()来获取id,然后将其存储在会话中,并在以后引用它。但是,我提醒说,如果您使用默认的PHP会话(通过session_start()$_SESSION等),会话将不会永远存在,所以如果他们离开他们的计算机并返回几个小时后(例如,从午餐回来),必须全面开始这个过程。

我认为最好有自己的会话处理程序(根据我的个人经验,这已被证明更可控,并且无论如何都是安全的)。但是,另一个选择是将id作为表单中的隐藏值发送回用户,例如:

<form ...>
    <input name="dbid" value="<?=$id?>" type="hidden" />
    <!-- the rest of the form.... -->

如果您不想向潜在的恶意用户透露dbid,那么这是不可能的。而且,严格地说,我认为这是不好的做法。但是,这是另一种选择。

编辑:然而另一个选项是使用cookies