繁体   English   中英

如何保留MySQL行并更新

[英]How to reserve a MySQL row and update

我被要求提供不确定如何完成的功能。 有一个在其中输入电话号码的表单页面-我需要在提交按钮时将该电话号码放入一行中,并在大约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 ="";
}
?>    

完成后,使用mysql_insert_id()获取ID。 将其存储在会话中,您可以在表单的其余部分中引用它。

正如tandu所说,您可以使用mysql_insert_id()获取ID,然后将其存储在会话中,并在以后引用它。 但是我要注意,如果您使用默认的PHP会话(通过session_start()$_SESSION等),则该会话将永远不存在,因此,如果它们离开计算机并在数小时后返回,则有可能,从午餐回来),则必须重新开始整个过程​​。

我认为最好拥有自己的会话处理程序(根据我的个人经验,事实证明,这是更可控的,而且还是安全的)。 但是,另一种选择是将ID作为表单中的隐藏值发送回用户,例如:

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

如果您不想向潜在的恶意用户透露该出价,那将是不可能的。 而且,严格来说,我认为这是不好的做法。 但是,这是另一个可行的选择。

编辑: 另一个选择是使用cookie

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM