0

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を再度追加しようとすると、新しいレコードは追加されませんでしたが、代わりに既存のレコードをタイムアウト列で更新するだけです。レコードを再度追加するにはどうすればよいですか?

4

1 に答える 1

0

INSERT ... ON DUPLICATE KEY UPDATE 構文. これにより、挿入または更新されます。

クエリ:

 $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
     $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); 
?>
于 2012-11-30T05:22:25.250 に答える