Php +;MySQL数据库中重复项的1到值列

Php +;MySQL数据库中重复项的1到值列,php,mysql,sql,Php,Mysql,Sql,我有一个PHP脚本搜索脚本,它记录MySQL数据库中的每个查询。当前,如果多次搜索相同的术语,将向数据库中添加查询的副本。当数据库中已有一个术语+1被添加到名为value的列中时,我如何使其如此 我的PHP代码是: <?php $database=mysql_connect("localhost","username","password"); mysql_select_db("database",$database); $query=$_GET['q']; logQuery($qu

我有一个PHP脚本搜索脚本,它记录MySQL数据库中的每个查询。当前,如果多次搜索相同的术语,将向数据库中添加查询的副本。当数据库中已有一个术语+1被添加到名为value的列中时,我如何使其如此

我的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);
}

?>

您可以对重复的a进行插入,并向查询添加一个名为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);
}
?>

首先,使用以下命令在
查询
字段上创建唯一索引:

CREATE UNIQUE INDEX query_idx ON queries (query)
然后,当发现重复的
查询时,更改
插入
查询以更新
字段(它将命中
查询idx
索引):

有关这方面的更多细节,请参阅文档

另外,不要忘记使用
mysql\u real\u escape\u string($query)
,而不是简单地使用
$query
,因为如果不转义字符串,并且
$query
变量包含例如
'
字符,它将损坏
INSERT
查询

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