[英]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.