【问题标题】:How to write a query for autocomplete in mysqli?如何在 mysqli 中编写自动完成查询?
【发布时间】:2017-09-21 18:16:28
【问题描述】:

代码:

<?php
  include('config.php');
  $return_arr = array();
  $term = $_GET['term'];
  $term = str_replace('.','',$term);
  $sql = "SELECT * FROM submission where keyword like '".$term."%' or keyword 
  like '%".$term."%' ORDER BY CASE WHEN keyword LIKE '".$term."%' THEN 1
  ELSE 2 END";
  $r = mysqli_query($link,$sql);
  while($row = mysqli_fetch_assoc($r))
  {
    $key = explode(",", $row['keyword']);
    foreach ($key as $keyword) 
    {
      $return_arr[] = $keyword;
    }  
  }
  echo json_encode($return_arr);
?>

我已经创建了自动完成建议框并且它可以正常工作,但是我有一个列名关键字,其中我的数据是像这样的look line apolo、alto、bmw、camaro、ducati,我正在使用 expload 函数一一列出。如果我用 (a) 字母搜索它会显示结果,但是当我想用 (b) 字母搜索时它什么也不显示。那么,我该如何解决这个问题?请帮助我。

谢谢

【问题讨论】:

  • 我正在尝试这个@Cashbee,但它显示相同的结果。

标签: php mysqli autocomplete


【解决方案1】:

使用 IN 过滤器为多个关键字获得更好的结果

SELECT keyword FROM submission WHERE keyword IN ('Apolo', 'BMW', ...);

【讨论】:

  • 它在where子句@rak007中显示未知列'a'
  • @omkara 请说得更准确些,我不明白
  • 我在 phpmyadmin 中使用 IN 子句并按照您提到的那样运行您的查询,但它没有显示任何内容。我已经像 SELECT keyword FROM submit WHERE keyword IN (Apolo) 一样运行;因此它在 where 子句中显示未知列“Apolo”。
  • 选择 * 那么,我猜不出你的数据库是怎么回事
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2018-11-22
  • 2014-07-09
  • 1970-01-01
相关资源
最近更新 更多