mysql中的计数器不起作用

时间:2012-01-18 15:25:34

标签: php mysql sql search

我正在尝试使用简单的计数器在网站上实现“最受欢迎的搜索”功能。这个想法是第一次进行搜索时,查询存储在一个特殊的表中。之后,每次进行相同的搜索时,计数值增加1。我认为我完全按照自己的意愿行事,但代码似乎不起作用。 count值保留在表格中的NULL上。这是我的代码。 “Searchny”是我存储搜索的表格。任何指针都非常感谢!

$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'");
} 

3 个答案:

答案 0 :(得分:3)

默认情况下,您的点数列可能为NULL,而count+1每个NULL的值不会低于INSERT。尝试将默认值设置为1或在{{1}}中将其显式设置为1。

答案 1 :(得分:1)

你的代码没有错,所以问题不在于代码。

您的值是NULL还是0?

如果为NULL,请更改

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

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

答案 2 :(得分:0)

您的问题很可能是count NULL。添加到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

如果它是一个新的sok值,则插入一个新行并将count设置为1.如果sok值已经存在,则记录的计数加1。