2011-06-20 10 views
1

MySQLデータベースで行われたすべてのクエリを記録するPHPスクリプト検索スクリプトがあります。現在、同じ用語が複数回検索されると、クエリの重複がデータベースに追加されます。どのようにしてタームがすでにデータベースに入っている場合、それを作ることができますか?+1という名前の列に値が追加されましたか?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); 
} 

?> 

答えて

3

まず:ちょうどあなたがあなたのSQLに一意索引

としてクエリ列を設定してくださいINSERTクエリvaluequeryの重複が見つかると(query_idxのインデックスになる)、

のフィールドを更新します。
INSERT INTO queries (query) VALUES ('$query') 
ON DUPLICATE KEY UPDATE value = value + 1 

詳細については、INSERT ... ON DUPLICATE KEY UPDATEのドキュメントをご覧ください。

また、$queryを使用して、単純にmysql_real_escape_string($query)の代わりに使用することを忘れないでください、あなたは文字列をエスケープしていないと$query変数が含まれ、例えば、'文字場合ので、それが破損しますあなたのINSERTクエリ。

0

あなたが重複した上でINSERTを行うA及びクエリに値と呼ばれるcoloumnを追加することができます。あなたを変える、そして、

CREATE UNIQUE INDEX query_idx ON queries (query) 

を:使用してqueryフィールドに一意のインデックスを作成し、

<?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); 
} 
?> 
+0

投稿を編集する – CogitoErgoSum

関連する問題