2012-01-18 35 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