簡體   English   中英

增加一個mysql計數字段

[英]Incrementing a mysql count field

我在表中有一個計數字段,我需要遞增,這就是我所擁有的。

$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) ;

但它永遠不會改變....有沒有更好的方法來做到這一點,為什么這不工作計數是一個整數字段

您應該只使用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() call中有一個拼寫錯誤。 您需要將$query_wiki傳遞給它。

解決第一個問題是有更好的方法 ,是的。 為了增加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)

$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) ;

如果您有大量的點擊次數,那么每次點擊增加計數可能會變得低效,因為它會導致大量的小數據庫更新。 換句話說,你想要這樣做

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...

這是一篇描述這個想法的文章 如果你google php rabbitmq你可以了解如何構建一個php版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM