增加一个mysql计数字段

时间:2010-09-08 14:31:14

标签: php mysql

我在表格中有一个需要递增的计数字段,这就是我所拥有的。

$click_tracker_row = mysql_fetch_array($result);
$current_count = $click_tracker_row['count'];
$new_count = $current_count + 1;
$query_wiki ="UPDATE click_tracker  SET count = '{$new_count}' WHERE click_tracker_id = '{$click_tracker_row['click_tracker_id']}' LIMIT 1";                 
$result = mysql_query($query) ;

但它永远不会改变....有没有更好的方法来做到这一点,为什么这不起作用 count是一个整数字段

4 个答案:

答案 0 :(得分:6)

您应该只使用SQL更新此计数器并使用PHP的mysql_real_escape_string() - 函数来阻止SQL注入:

$query_wiki ="UPDATE click_tracker SET count = count + 1 WHERE click_tracker_id = '".mysql_real_escape_string($click_tracker_row['click_tracker_id'])."' LIMIT 1";

此外,您的mysql_query()电话中也有拼写错误。您需要将$query_wiki传递给它。

答案 1 :(得分:3)

要解决第一个问题有更好的方法吗,是的。 要增加MySQL中的计数,只要您有要更新的ID,就不需要提取任何内容,并且还应确保为查询正确转义ID。

$id = mysql_real_escape_string($id); // replace $id with however you get the tracker_id
$query_wiki ="UPDATE click_tracker  SET count = count + 1 WHERE click_tracker_id = '{$id}' LIMIT 1"; 

要回答第二个问题,为什么这不起作用,您在下半部分正在进行mysql_query($query)而不是mysql_query($query_wiki)

答案 2 :(得分:0)

$click_tracker_row = mysql_fetch_assoc($result);
$query_wiki ="UPDATE `click_tracker`
              SET `count` = `count` + 1 
              WHERE `click_tracker_id` = '".$click_tracker_row['click_tracker_id']."'         
              LIMIT 1";                 
$result = mysql_query($$query_wiki) ;

答案 3 :(得分:0)

如果您有大量点击次数,那么每次点击都会增加计数效率可能会降低效率,因为它会导致大量的小数据库更新。换句话说,你想要这样做

UPDATE click_tracker SET count = count + 5...

而不是

UPDATE click_tracker SET count = count + 1...
UPDATE click_tracker SET count = count + 1...
UPDATE click_tracker SET count = count + 1...
UPDATE click_tracker SET count = count + 1...
UPDATE click_tracker SET count = count + 1...

这是描述这个想法的article。如果你google php rabbitmq,你可以了解如何构建一个php版本。