我创建了一个搜索栏,用于在我的数据库中搜索用户,我将在下面分享我的代码。但有一个问题是,如果我在一个表中有5个用户,它会显示这5个用户,但是如果我有1,000个用户,则显示所有1,000个用户。
无论我试图限制它,它都没有用。有时它会完全杀死PHP脚本。
有谁知道如何解决这个问题,并且从下面的代码中仅限每个搜索查询显示5个结果?
HTML INPUT和AJAX SCRIPT :
<input id="text" type="text" name="text" onkeyup="showHint(this.value)" autocomplete="off" />
<div id="inner" class="inner"></div>
<script>
function showHint(str) {
if (str.length==0) {
document.getElementById("inner").innerHTML="You haven't search. Please have :D";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("inner").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("REQUEST","searchquery.php?text="+str,true);
xmlhttp.send();
}
</script>
AND searchquery.php :
<?
$text = $_REQUEST['text'];
$text = preg_replace('#[^a-z0-9]#i', '', $text);
function connect($database) {
mysql_connect('localhost','root','');
mysql_select_db($database);
}
connect('developing');
$query = "SELECT * FROM users WHERE first_name LIKE '%$text%' OR last_name LIKE '%$text%'";
$action = mysql_query($query);
$result = mysql_num_rows($action);
if ($result == 0) {
$output = "User does not exist...";
}else{
while ($row = mysql_fetch_array($action)) {
$output .= '<div class="output"><img src="/'.$row['avatar'].'"><a href="#">'.$row['first_name'].' '.$row['last_name'].'</div><br />';
}
}
echo $output;
?>
有人能看到一些关于如何制定限制的解决方案吗?
答案 0 :(得分:4)
在查询中使用LIMIT
:
SELECT *
FROM users
WHERE first_name LIKE '%$text%'
OR last_name LIKE '%$text%
LIMIT 5'