Php 如何执行条件SQL insert语句?

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 不

我对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
不幸的是,但也不足为奇的是,这会产生一个语法错误,错误是关于问题的位置非常模糊


我做了什么蠢事吗?

我不确定MySQL的语法,但您可能需要在这部分用括号括起来: 从MyTable中选择maxEntryDate使用并检查时间为>5分钟的行

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。此外,还有一个输入错误-当前的_日期和间隔之间应该有一个逗号。看到错误信息会有所帮助。哦,我实际上想要当前的时间戳。我的错。错误消息是无用的:语法错误在[整个查询都在这里]附近,所以我想我应该忽略它。它不是无用的,因为它告诉我们在哪里遇到了错误。