2012-01-18 58 views
1

我試圖用簡單的計數器在網站上實現「最流行的搜索」功能。這個想法是,第一次搜索時,查詢存儲在一個特殊的表格中。之後,每次進行相同的搜索時,計數值會加1。我認爲我完全按照我應該做的,但代碼似乎不工作。表中的count值保持在NULL。這是我的代碼。 「搜索」是我存儲搜索的表格。任何指針非常感謝!mysql中的計數器不起作用

$search_result = mysql_query("SELECT * FROM searchny WHERE sok='$sokt'"); 

if(mysql_num_rows($search_result) == 0) { 
    $sql = "INSERT INTO searchny (sok, dt) VALUES ('" . $sokt . "', NOW());"; 
    mysql_query($sql); 
} 
else { 
    mysql_query("UPDATE searchny SET count = count+1 WHERE sok='$sokt'"); 
} 
+1

您應該像更新一樣對待$ sokt變量,如在插入。什麼是錯誤? – 2012-01-18 15:27:58

+0

歡迎來到StackOverFlow!請給我們更正確的問題。有錯誤,請。 – pltvs 2012-01-18 15:29:18

回答

0

你的問題很有可能是countNULL。添加到NULL的任何內容都是NULL。

嘗試此查詢:

SELECT NULL + 1 

結果將是:

NULL 

你可以爲count字段設置默認值改爲0

但是,這是一個更簡單的實現方法。請注意,我已經排除的日期字段,因爲我不知道什麼日期的要求是:

Table searchny: 
--------- 
sok 
count 
--------- 
primary_key (sok) 

然後做這一切在一個聲明:

INSERT INTO searchny (sok, count) VALUES ($sokt, 1) 
    ON DUPLICATE KEY UPDATE count = count + 1 

如果它是一個新索值,則插入一個新行並將計數設置爲1.如果sok值已經存在,則記錄的計數會加1。

+0

謝謝你,正如你所說,我的腳本的問題是,它的值被設置爲null。我絕對會嘗試你的腳本,看起來很整潔! – user1009453 2012-01-18 16:23:00

3

可能是你數列NULL默認情況下,每count+1不作任何少NULL。嘗試設置默認值1或在INSERT中將其明確設置爲1。

1

你的代碼沒有錯誤,所以問題不在於代碼。

你的值是NULL還是0?

如果爲NULL,改變

INSERT INTO searchny (sok, dt) VALUES ('" . $sokt . "', NOW()); 

INSERT INTO searchny (sok, dt, count) VALUES ('" . $sokt . "', NOW(), 0); 
+0

在第一次發生時將它設置爲一個會更有意義。 – 2012-01-18 15:32:54

+0

非常感謝,很有魅力! – user1009453 2012-01-18 16:21:25