我有一个搜索框,用户可以通过下拉列表中的几种方式搜索其他用户,名字,姓氏,用户名或电子邮件。这个下拉列表显示前8个结果,然后我在底部显示一个链接,说明他们可能已输入到搜索中的文本位找到更多结果。
因此,例如,如果我输入JOHN但只键入其名称的“JO”,则这是值$ _GET ['t']应发送到searchresults页面的值。所以我得到了链接。但我只是不知道查询应该是什么
显示更多结果链接
<a href='include/searchresults.php?ref=".$_GET['t']."'>Show More Results for ".$_GET['t']."</a>
SEARCHRUSULTS.PHP
if(isset($_GET['t'])){
$_GET['t'] = str_replace(" ", "", $_GET['t']);
$_GET['t'] = str_replace("%", "", $_GET['t']);
$_GET['t'] = mysqli_real_escape_string($mysqli,$_GET['t']);
if(strlen($_GET['t'])>1){
$sql="SELECT * FROM users WHERE username LIKE '%".$_GET['t']."%' OR first LIKE '%".$_GET['t']."%' OR last LIKE '%".$_GET['t']."%' OR email LIKE '%".$_GET['t']."%' ORDER BY first ASC";
$query=mysqli_query($mysqli,$sql);
$count = mysqli_num_rows($query);
if($count<=0){
echo "No results found";
}else{
echo "<table width='100%'>";
while($user_data=mysqli_fetch_array($query)){}
答案 0 :(得分:1)
尝试这样的事情,使用MATCH代替LIKE要快得多。
$keyword=mysql_real_escape_string($_GET['t']);
$rowsperpage=8;
$sql="SELECT * FROM users WHERE MATCH (first, last, email) AGAINST ('+$keyword*' IN BOOLEAN MODE) ORDER by first LIMIT $rowsperpage";
$query=mysqli_query($mysqli,$sql);
$count = mysqli_num_rows($query);
并根据需要设置$rowsperpage
。
要获得更多结果页面,请执行以下操作
$rowsperpage=mysql_real_escape_string($_GET['rpp']);
<a href='include/searchresults.php?t=$keyword&rpp=$rowsperpage'>Show More Results for "$keyword"</a>