在php中使用insert和update

在php中使用insert和update,php,mysql,date,time,Php,Mysql,Date,Time,我在记录timein和timeout时有这个代码 if(isset($_POST['submit'])) { $query=mysql_query("Select * FROM tblattendance where IDNumber='" . $_POST['IDNumber'] . "' "); list($exists) = mysql_fetch_row($query); $idnumber=$row['IDNumber']; $fname=$row['FirstName']; $mn

我在记录timein和timeout时有这个代码

if(isset($_POST['submit']))
{
$query=mysql_query("Select * FROM tblattendance where IDNumber='" . $_POST['IDNumber'] . "' ");
list($exists) = mysql_fetch_row($query);

$idnumber=$row['IDNumber'];
$fname=$row['FirstName'];
$mname=$row['MiddleName'];
$lname=$row['LastName'];

if($exists){
$sql="UPDATE $tbl_name SET TimeoutAM=CURTIME() WHERE IDNumber='" . $_POST['IDNumber'] . "' ORDER BY  Date DESC, TimeinAM DESC LIMIT 1"; 
}else{
$sql="INSERT INTO $tbl_name SET Date=CURRENT_DATE(), TimeinAM=CURTIME(), IDNumber='$idnumber', FirstName='$fname', MiddleName='$mname', LastName='$lname' ";       
}
$result=mysql_query($sql);
}
我的问题是,如果IDNumber不存在,它将添加一个带有timein的新记录,然后更新超时。但是当我再次尝试添加相同的IDNumber时,它没有添加新记录,而是更新现有记录的超时列。我该怎么做才能再次添加记录

。这将插入或更新

查询:

 $idnumber = $_POST['IDNumber'];

INSERT INTO $tbl_name(IDNumber,Date,Timein,FirstName,MiddleName,LastName) 
values( '$idnumber',CURRENT_DATE(), NOW(), '$fname', =$mname', '$lname'
ON DUPLICATE KEY UPDATE Timeout=CURRENT_DATE()
您的第一列必须是IDNumber,因为它按照列的顺序创建筛选器,更新将解释为:

UPDATE $tbl_name SET Timeout=NOW() WHERE IDNumber='" .   $_POST['IDNumber'] . "
代码:


对不起,我应该把代码放在哪里?在我的php代码中还是在我的mysql中?我用的是phpmyadmin。对不起,我对这个很陌生对不起,我编辑了上面的代码。请再看一次。虽然该代码不会再次插入新记录,但您可以在pne shot使用我提到的查询进行插入和更新pne shot是什么?我试过你的代码,它一直在插入,但没有更新。试一下。拼写错误!。你有没有像我一样提到第一列IDNumber=>INSERT INTO$tbl_name(IDNumber,…)因为它会按顺序使用列来查找记录alreay EXIST看起来你在使用“mysql”请注意,这些函数已被弃用,最终将被从PHP中删除。如果可能的话,请您的代码。请考虑切换到MyQuLi或PDO,以便使用。
<?php
     $sql="INSERT INTO $tbl_name(IDNumber,Date,Timein,FirstName,MiddleName,LastName) 
    values( '$idnumber',CURRENT_DATE(), NOW(), '$fname', =$mname', '$lname'
    ON DUPLICATE KEY UPDATE Timeout=CURRENT_DATE()";

    $result=mysql_query($sql); 
?>