0

我做了一个搜索栏,用于在我的数据库中搜索用户,我将在下面分享我的代码。但一个问题是,如果我在一个表中有 5 个用户,它会显示这 5 个用户,但如果我有 1,000 个用户,则它会显示全部 1,000 个用户。

无论我试图限制它,它都不起作用。有时它会完全杀死 PHP 脚本。

有谁知道如何解决这个问题,并从下面的代码中限制每个搜索查询仅显示 5 个结果?

HTML 输入和 AJAX 脚本

<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>

和 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;
?>

任何人都可以看到一些关于如何限制的解决方案吗?

4

1 回答 1

4

LIMIT在您的查询中使用:

SELECT * 
FROM users 
WHERE first_name LIKE '%$text%' 
OR last_name LIKE '%$text% 
LIMIT 5'
于 2013-04-27T15:46:31.053 回答