对于MySQL数据库中的重复条目,为+1列值

时间:2011-06-20 22:06:50

标签: php mysql sql

我有一个PHP脚本搜索脚本,记录MySQL数据库中的每个查询。目前,如果多次搜索相同的术语,则会将查询的副本添加到数据库中。当术语已经存在于数据库中时,如何将+1添加到标题为值的列中?

我的PHP代码是:

<?php

$database=mysql_connect("localhost","username","password");
mysql_select_db("database",$database);

$query=$_GET['q'];

logQuery($query);
function logQuery($query){
$query="insert into queries (query) values ('$query')";
mysql_query($query);
}

?>

2 个答案:

答案 0 :(得分:3)

首先,使用以下方法在query字段上创建唯一索引:

CREATE UNIQUE INDEX query_idx ON queries (query)

然后,当找到重复的INSERT时,更改value查询以更新query字段(它会点击query_idx索引):

INSERT INTO queries (query) VALUES ('$query')
ON DUPLICATE KEY UPDATE value = value + 1

请查看INSERT ... ON DUPLICATE KEY UPDATE的文档,了解有关此问题的详细信息。

另外,不要忘记使用mysql_real_escape_string($query)而不是简单地使用$query,因为如果你没有转义字符串而$query变量包含,例如' 1}}字符,它会损坏您的INSERT查询。

答案 1 :(得分:0)

您可以执行INSERT On Duplicate并向查询添加名为value的列。只需确保将查询列设置为唯一索引

在您的SQL上:

<?php

$database=mysql_connect("localhost","username","password");
mysql_select_db("database",$database);

$query=$_GET['q'];

logQuery($query);
function logQuery($query){
$query="insert into queries (query) values ('$query')
 on duplicate key update value=value+1;
";
mysql_query($query);
}
?>