【问题标题】:Search Results (Show more results)搜索结果(显示更多结果)
【发布时间】:2012-08-25 15:07:07
【问题描述】:

我有一个搜索框,用户可以在其中以几种方式搜索其他用户,包括名字、姓氏、用户名或电子邮件。这个下拉列表显示了前 8 个结果,然后我在底部显示了一个链接,表示使用他们可能输入到搜索中的文本位查找更多结果。

因此,例如,如果我输入 JOHN 但只输入他的名字的“JO”,这就是 $_GET['t'] 应该发送到搜索结果页面的值。所以我得到了链接。但我只是不知道查询应该是什么

显示更多结果链接

<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)){}

【问题讨论】:

  • 你如何只得到 8 个结果,你应该得到所有结果,因为你没有在查询中设置任何限制。
  • 您使用的是mysqli,但您没有使用占位符。这是一个坏主意。在您的查询中看到像$_GET['t'] 这样的东西会让您感到害怕。即使您使用了转义功能,也不应该这样做。你错过其中之一,将会有严重的后果。
  • 上面的代码看起来不错,那么你怎么能得到更多的结果
  • 对不起,你一定是误会了。我有一个下拉列表,限制为 8 个结果。要显示更多信息,请单击该链接,它会将您带到没有限制的搜索结果页面,并显示所有带有 $_GET['t'] 输入字母的结果
  • @tadman 我对 MYSQLI 很陌生,我刚刚转换了我的整个网站。您所说的占位符是指查询中的变量吗?

标签: php mysql


【解决方案1】:

尝试这样的事情,使用 LIKE 的 MATCH 会快得多。

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

【讨论】:

  • 我只是得到一个空白页。这看起来很接近我需要的东西。和我的链接有关吗?
  • 该链接找不到这些变量,因为该链接位于带有下拉菜单的页面上。并将 $_GET['t'] 变量发送到 searchresults.php
  • 我已经成功了。只需先在链接中更改为“t”。谢谢
猜你喜欢
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2013-01-14
  • 2014-01-20
  • 1970-01-01
相关资源
最近更新 更多