2010-07-21 23 views
0

我遇到了一個問題,那就是我。 我有一個非常簡單的表(MyISAM),我有一個字段「count(INT)(11)」MySQL - 增加一個現有值

這只是一個計數器,每次查看一個產品/項目時都會增加。 問題是查詢遞增2而不是1.

即, Actualfield value = 10

比我運行: mysql_query(「update table_test set count = count + 1 where id = 1」);

領域的計數值變爲12,而不是11

我想,也許我的腳本運行過程中出現了2次查詢,然後我做了一個乾淨的文件與該行:


    $con = mysql_connect("localhot","user","pass"); 
    mysql_select_db("database"); 
    mysql_query("update table_test set count = count+1 where id = 1"); 

沒有更多的文件..它仍然添加2 insted 1. 但如果我複製此查詢並使用Phpmyadmin運行它的工作。

任何人都知道發生了什麼?

感謝名單非常 小子認爲 塔西斯弗洛倫西奧

這是一個完整的代碼我使用:

 

include 'includes/constants.php'; //just db_user, db_pass and connection 
include 'includes/connect.php'; 

//here i select the actual count value 
$result = mysql_query("select count from pictures where id = 6909") or die (mysql_error()." - [select count from pictures where id = 6909]"); 
$row = mysql_fetch_array($result); 
$aux = (int)$row['viewed'] + 1; // increment 
mysql_query("UPDATE pictures SET viewed = {$aux} WHERE id = 6909"); 
 

而且我已經嘗試:

 

mysql_query("UPDATE pictures SET viewed = viewed+1 WHERE id = 6909"); 
 

如果我運行文件使用這樣的查詢: 更新圖片SET查看= 15其中id = 6909

其中我指定要更新的值,工作。

+1

可能是從您的網絡瀏覽器發送的2X個請求。你能分享你的相關代碼嗎? – Sadat 2010-07-21 15:57:06

+0

事實上,查詢HAS運行兩次以獲得此信息,可能是其他地方的邏輯編碼錯誤或「雙」請求(檢查訪問日誌中的哪一個) – Wrikken 2010-07-21 16:07:47

+0

這是我的想法,但它是一個乾淨的文件,即使不打印任何輸出。我只是按F5來運行上面的行。我已經更新了上面的代碼,所以..這就是我正在運行的。該文件放置在我的根目錄下。 !?!? – Varois 2010-07-21 16:13:20

回答

0

如果您在phpMyAdmin中包含相同的查詢並且它正在工作,那麼這對您的查詢沒有任何問題,您可以共享您調用查詢的代碼嗎?