【发布时间】:2017-08-29 10:15:07
【问题描述】:
我已经创建了一个用户日志表
时间戳日期时间(3) 事件字符(25)
vartimestamp =date('Y-m-d H:i:s'). substr((string)microtime(), 1, 8);;
$varevent="loginattempt";
$stmt = $DBcon->prepare("INSERT INTO userlog(timestamp, event) VALUES('$vartimestamp', '$varevent')");
if($stmt->execute())
echo "Successful";
else echo "Error";
我得到了成功的结果。 但是记录是重复的
第一次尝试
2017-04-04 14:59:02.007 loginattempt
2017-04-04 14:59:02.025 loginattempt
第二次尝试
2017-04-04 15:00:30.200 loginattempt
2017-04-04 15:00:30.218 loginattempt
如何在使用带索引的 datetime(3) 列时避免重复
【问题讨论】:
-
你可以看到时间戳不是重复的,每个条目都有不同的时间,对于“事件”,那么你已经写了你的
$varevent有一个静态值,你为什么期待它改变吗? -
没有问题是当查询被调用时它会重复记录。(例如 2017-04-04 14:59:02.007 和 2017-04-04 14:59:02.025 是单个查询执行. 我认为这是由于 datetime(3) 造成的问题,因为 datetime(0) 没有显示重复的结果。
-
这不是使用准备好的语句的方式
-
@MasivuyeCokile 我也试过 stmt->bindParam(":etimestamp", $vartimestamp) 。结果相同。
-
嗯... 18ms?我敢打赌你在 Windows 上的毫秒数实现很糟糕?