我在表格中有一个需要递增的计数字段,这就是我所拥有的。
$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是一个整数字段
答案 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版本。