Php 如何执行条件SQL insert语句?
我对MySQL一无所知。我试图编写一个查询,将一行插入表中,但前提是前一行是在5分钟前插入的。此外,我希望我的PHP代码能够以某种方式知道是否插入了数据。这是我的尝试:Php 如何执行条件SQL insert语句?,php,mysql,Php,Mysql,我对MySQL一无所知。我试图编写一个查询,将一行插入表中,但前提是前一行是在5分钟前插入的。此外,我希望我的PHP代码能够以某种方式知道是否插入了数据。这是我的尝试: IF (SELECT max(EntryDate) from MyTable) < DATE_SUB(CURRENT_DATE() INTERVAL 5 MINUTE) THEN INSERT INTO MyTable (...) values (...) ELSE Select false END IF 不
IF (SELECT max(EntryDate) from MyTable) < DATE_SUB(CURRENT_DATE() INTERVAL 5 MINUTE) THEN
INSERT INTO MyTable (...) values (...)
ELSE
Select false
END IF
不幸的是,但也不足为奇的是,这会产生一个语法错误,错误是关于问题的位置非常模糊
我做了什么蠢事吗?我不确定MySQL的语法,但您可能需要在这部分用括号括起来: 从MyTable中选择maxEntryDate
INSERT INTO MyTable (column1, column2)
SELECT value1, value2 FROM DUAL
WHERE NOT EXISTS (SELECT *
FROM MyTable
WHERE EntryDate > DATE_SUB(NOW(), INTERVAL 5 MINUTE))
运行SELECT查询,查看程序中的结果,然后决定是否运行INSERT查询
//Ask for how many rows are less than 5 minutes old
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM MyTable WHERE MAX(EntryDate) > CURRENT_TIMESTAMP - INTERVAL 5 MINUTE"),0);
if ($count == 0) {
mysql_query("INSERT INTO...");
//I know I just INSERTed a row because I'm inside the conditional!
}
你得详细说明一下。我对MySQL不够流利,无法了解如何使用它。Eric,我已经补充了答案。+1事实上,事后看来,我想我可以从文档中得出这个结论。无论如何,谢谢你。至于我问题的第二部分,我的PHP代码是否有一种简单的方法来确定插入是否成功?当然。假设您正在使用mysql_*函数,只需调用mysql_u受影响的_u行即可。这比练习好还是比练习差?我想过要这样做。是否存在性能差异?另外,我注意到你没有使用DATE_SUB,而是使用了一个负号:这真的有效吗?这对我不起作用。我得到了一个无效的使用组函数的错误,再次,没有位置。这不应该是在db之外处理的事情吗?听起来像是一条商业规则。@Matt Phillips:商业规则?不知道你的意思。我只是不想用相同的数据污染我的数据库,因为值的变化非常缓慢,但数据库可能会被要求在任意时间更新。CURRENT_DATE返回午夜的日期-减去五分钟,前一天的时间为23:55:00。此外,还有一个输入错误-当前的_日期和间隔之间应该有一个逗号。看到错误信息会有所帮助。哦,我实际上想要当前的时间戳。我的错。错误消息是无用的:语法错误在[整个查询都在这里]附近,所以我想我应该忽略它。它不是无用的,因为它告诉我们在哪里遇到了错误。