我正在尝试使用简单的计数器在网站上实现“最受欢迎的搜索”功能。这个想法是第一次进行搜索时,查询存储在一个特殊的表中。之后,每次进行相同的搜索时,计数值增加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'");
}
答案 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。