【问题标题】:using insert and update in php在 php 中使用插入和更新
【发布时间】:2012-11-30 05:04:47
【问题描述】:

我有这段代码记录时间和超时

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 时,它并没有添加新记录,而是只是更新了现有记录的超时列。我该怎么做才能再次添加记录?

【问题讨论】:

标签: php mysql date time


【解决方案1】:

INSERT ... ON DUPLICATE KEY UPDATE Syntax。这将插入或更新。

查询:

 $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); 
?>

【讨论】:

  • 对不起,我应该把代码放在哪里?在我的 php 代码或我的 mysql 中?我正在使用 phpmyadmin。抱歉,我真的很陌生
  • 对不起,我在上面编辑了我的代码。请再看一遍。尽管该代码不会再次插入新记录。
  • 您可以使用我在 pne shot 中提到的查询进行插入和更新
  • 什么是 pne shot?我试过你的代码,它一直在插入但没有更新
  • 不好意思说一下。拼写错误!。您是否像我所做的那样提到了第一列作为 IDNumber => INSERT INTO $tbl_name(IDNumber,.... 因为它将按顺序使用列来查找记录是否存在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
相关资源
最近更新 更多