这是我在MySQL数据库中的表:
CREATE TABLE admins (
id int NOT NULL AUTO_INCREMENT,
bez varchar(55) DEFAULT 'unknown',
type varchar(7) NOT NULL DEFAULT 'unknown',
exist char NOT NULL DEFAULT '0',
tm TIMESTAMP default CURRENT_TIMESTAMP;
PRIMARY KEY ('id')
);
我只想在将eXist设置为‘1’时更新我的时间戳. 当我更改任何专栏时就不会了.
这是我的更新声明:
<?php
if ( isset($_GET["id"]) ) {
$id = $_GET["id"];
$sql = "UPDATE admins SET exist='1' WHERE id=$id";
$con->query($sql);
}
header("location: /index.php");
exit;
?>
我试着用不同的方法把它和tm
结合起来,但没有奏效!
我试过这样的东西:
if ( isset($_GET["id"]) ) {
$id = $_GET["id"];
$tm = date('Y-m-d H:i:s');
$sql = "UPDATE admins SET exist='0', tm=$tm WHERE id=$id";
}
用AND
元并不管用.
我在SQL中try 了ON UPDATE CURRENT_TIMESTAMP
,但它对我不起作用.因为如果eXist是‘1’,我只想要新的tm.
我在SQL中try 了以下内容:
DELIMITER $$
CREATE TRIGGER trigger_name
AFTER UPDATE
ON admins FOR EACH ROW
BEGIN
IF NEW.exists = 1 THEN
SET NEW.tm = NOW();
END IF;
END$$
DELIMITER ;
但我收到一条SQL错误消息:
ERROR 1362 (HY000): Updating of NEW row is not allowed in after trigger
所以我试着用之前而不是之后,但我根本没有改变tm.
你有什么主意吗? 我能做些什么来解决我的问题?
Goal: UPDATE tm when setting exist to '1'个
不要告诉我我对SQL注入持开放态度! 谢谢你的帮忙!