无缝地将1添加到上一行值?

时间:2011-09-13 07:17:50

标签: php mysql

我想为hit_count的前一行的值添加1,但是如果快速运行多个查询(即页面加载多次,我担心这样做可能不安全)第二 - 这是我正在制作的网络应用程序,所以我想确保支持任何数量的页面加载。)

以下是我的想法:

$result = mysql_query("SELECT * FROM rotation");
$fetch = mysql_fetch_assoc($result);

$update_hit = $fetch['hit_counter']+1;

$query = "INSERT INTO rotation (hit_counter, rotation_name) VALUES ('$update_hit', '$rotation_name')";
$result = mysql_query($query);

我考虑过将hit_counter列设置为UNIQUE KEY,但我不知道之后我还会做什么。

我会使用AUTO_INCREMENT,但问题是,我需要在脚本的其余部分中使用实际的hit_counter值。

任何想法,评论和建议都将不胜感激!

修改:我使用了hit_counthit_counter,这是一个错字。更新以避免任何混淆。

2 个答案:

答案 0 :(得分:1)

当您将名字+计数器设为唯一值时,您可以使用DUPLICATE KEY functionality

INSERT INTO rotation SET hit_counter = 1, rotation_name= 'name' 
ON DUPLICATE KEY UPDATE hit_counter = hit_counter + 1

性能方面(如果您的要求允许)我建议使用像f.e.这样的缓存机制批量推送更新(每100次点击)。分布式缓存。

答案 1 :(得分:1)

您可以使用AUTO_INCREMENT,如果您需要在其余脚本中插入ID,则可以使用mysql_insert_id来获取它。