复制mysql单插入查询的数据

时间:2017-04-04 09:32:56

标签: php mysql xampp mariadb

我已经创建了一个用户日志表

时间戳日期时间(3) 事件char(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)列时避免重复

1 个答案:

答案 0 :(得分:0)

你工作太辛苦了 - 跳过PHP代码,注意你可以在MySQL中完成工作:

mysql> SELECT NOW(3);
+-------------------------+
| NOW(3)                  |
+-------------------------+
| 2017-04-04 10:13:06.862 |
+-------------------------+

因此,请使用INSERT ... VALUES (NOW(3), ...

除非字符串是固定宽度,否则不要使用CHAR;使用VARCHAR

回到代码中的真正的错误。每次从浏览器调用PHP脚本都会导致重新开始 - 所以你注定要获得一个新的日期时间,你可以用PHP代码或MySQL代码来完成它。重新思考你的设计。

另一方面,如果您说execute()正在执行两次,那么我就不会在您提供的有限代码段中看到它。

我会猜测提供$DBcon的软件包正在做一些顽皮的事情;深入研究。