尝试优化此MySQL查询(在同一查询中选择,插入和更新)

时间:2011-10-13 07:22:37

标签: php mysql

我从php获得此查询:

mysql_query("INSERT INTO ".table_hack." (id,ip,count,lasttime) 
             VALUES (NULL,'".$ip."',1,NOW()) 
             ON DUPLICATE KEY UPDATE count=count+1, lasttime=NOW();");

正如您所看到的那样,只有当 Unique 元素不存在时才会在table_hack上插入新记录,在我的情况下 ip 。如果该元素存在,则查询将使用 NOW()参数在{1}和count中更新de lasttime

我想在同一个查询中知道count的值,有可能吗?我知道我可以进行另一个查询,但我想在一个查询(如果可能的话)。谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

您无法组合INSERT和SELECT查询,因此您必须运行两个查询。为什么使用两个查询会有问题?

答案 1 :(得分:0)

不,你不能。
此外,我认为没有理由这样的愿望。

对我而言,这是一个有趣的现象。这些问题经常出现在Stackoverflow上,我很好奇为什么人们如此渴望将查询结合到一个调用中。 更令人惊讶的事实是,每个人都只用2个查询限制自己,没有人问如何将脚本中的所有查询组合成一个mysql调用。

答案 2 :(得分:-1)

你不能用标准的php mysql函数来做。您可以使用Mysqli驱动程序和方法multi_query()来完成它,但它将是2个查询。