gpt4 book ai didi

php - 插入和更新记录

转载 作者:行者123 更新时间:2023-11-29 14:01:28 25 4
gpt4 key购买 nike

您好,有人可以帮我吗...我已经尝试了几种不同的方法,同时尝试实现这样的输出。

id   idnumber    datein      timein     dateout     timeout

1 123 2013-02-21 08:00:01 2013-02-21 11:12:45

2 456 2013-02-21 10:15:01 2013-02-21 05:30:01

3 123 2013-02-21 06:58:52 2013-02-21 03:20:16

4 123 2013-02-21 10:05:35 2013-02-21

但是我仍然无法得到它......我正在尝试进行出勤监控,其中一个人可以根据自己的意愿超时和超时,只要将其记录到数据库中即可。我在 php 中有这两个代码可以工作,但不是我想要的输出。

下面的代码仅插入一条记录,但更新不起作用:

if (isset($_POST['idnumber'])){
$query = "INSERT INTO tblattendance SET idnumber='".$_POST['idnumber']."', datein=CURDATE(), timein = CURTIME()";
$insert_result = mysql_query($query);
}else{
$query1 = "UPDATE tblattendance SET dateout=CURDATE(), timeout = CURTIME() WHERE idnumber='".$_POST['idnumber']."' ORDER BY id DESC LIMIT 1 ";
$insert_result1 = mysql_query($query1);
}

下面的代码仅当不存在 idnumber 的现有记录时才执行插入和更新,但如果 idnumber 存在,则仅更新超时列。

$query = "SELECT * FROM tblattendance WHERE idnumber='".$_POST[idnumber']."'";
$res = mysql_query($query);
list($exist) = mysql_fetch_array($res);

if (!$exist){
$query = "INSERT INTO tblattendance SET idnumber='".$_POST['idnumber']."', datein=CURDATE(), timein = CURTIME()";
$insert_result = mysql_query($query);
}else{
$query1 = "UPDATE tblattendance SET dateout=CURDATE(), timeout = CURTIME() WHERE idnumber='".$_POST['idnumber']."' ORDER BY id DESC LIMIT 1 ";
$insert_result1 = mysql_query($query1);
}

最佳答案

原始代码试图使用 UPDATE 插入数据库语法(而不是一般的 INSERT 语法,尽管基于此 source 似乎是正确的)。

      $query = "INSERT INTO tblattendance SET idnumber='".$_POST['idnumber']."', datein=CURDATE(), timein = CURTIME()";

对于我的示例,我使用下面的表架构...

CREATE TABLE IF NOT EXISTS `tblattendance` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`idnumber` int(11) NOT NULL,
`timein` datetime DEFAULT NULL,
`datein` datetime DEFAULT NULL,
`timeout` datetime DEFAULT NULL,
`dateout` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

通过 rhein 从原始代码中删除了一些重复内容

//grab the id_number
$id_number = $_POST['idnumber'];
//fetch rows
$query = "SELECT * FROM test.tblattendance WHERE idnumber='".$id_number."'";
$res = mysql_query($query);
$rows = mysql_fetch_array($res);
//create an initial query to update the database
$query = "UPDATE test.tblattendance SET dateout=CURDATE(), timeout = CURTIME() WHERE idnumber='".$id_number."'";
//check we have no rows
if (empty($rows)){
//because we have no rows modify the query
$query = "INSERT INTO test.tblattendance VALUES('', $id_number, CURDATE(), CURDATE(), null, null);";
} @mysql_query($query);

为了有效抵御SQL注入(inject)。 $_POST 中的所有元素都应该用 mysqli_real_escape_string 包裹起来。或者您应该在查询数据库之前将 $_POST 中的撇号替换为 ASCII 字符。

关于php - 插入和更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14995782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com