Php +;MySQL数据库中重复项的1到值列
我有一个PHP脚本搜索脚本,它记录MySQL数据库中的每个查询。当前,如果多次搜索相同的术语,将向数据库中添加查询的副本。当数据库中已有一个术语+1被添加到名为value的列中时,我如何使其如此 我的PHP代码是: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
$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