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