I have a search script which logs every search query in a MySQL database unless the word is on my block list. However, when more than 3 entries are in the table it will not allow any more. Why could this be?
My PHP script is:
<?php
mysql_connect("localhost","username","password");
mysql_select_db("database");
if(!empty($_GET['q'])){
$query=mysql_real_escape_string(trim($_GET['q']));
$searchSQL="SELECT * FROM links WHERE `title` LIKE '%{$query}%' LIMIT 8";
$searchResult=mysql_query($searchSQL);
while ($row=mysql_fetch_assoc($searchResult)){
$results[]="<div class='webresult'><div class='title'><a href='{$row['url']}'>{$row['title']}</a></div><div class='desc'>{$row['description']}</div><div class='url'>{$row['url']}</div></div>";
}
if(empty($results)){
echo 'No results were found';
} else {
echo implode($results);
}
}
$block=array('word', 'word');
if(!in_array($query, $block)){
function logQuery($query){
$query="insert into queries (query) values ('$query') on duplicate key update value=value+1";
mysql_query($query);
}
logQuery($query);
}
?>
Check your table structure. Make sure you have a problem auto-increment on your primary key. Also, don’t use unique on any of your fields as you might have duplicates.