mysqli-按名称搜索

一分钱

我有一个充满名称的数据库。我想搜索其中包含的所有名称$name但是,我希望具有$name名字的人首先出现。

例如$name = John

我的结果是:

  1. 亚历克斯·约翰·史密斯
  2. 安德鲁·迈克尔·约翰
  3. 约翰·凯斯
  4. 约翰·杜

我希望他们喜欢(将结果放在姓氏上的结果,将结果放在姓氏上的结果,其他结果):

  1. 约翰·凯斯
  2. 约翰·杜
  3. 安德鲁·迈克尔·约翰
  4. 亚历克斯·约翰·史密斯

    $name = $_POST['text_search'];
    
    $sql = <<<SQL
            SELECT *
            FROM `teachers`
            WHERE `name` LIKE '%{$name}%' ORDER BY `name` ....
    SQL;
    

我该如何订购?

数字电视

您可以使用PHP进行订购(请参见@siniradam的答案)...,也可以直接使用SQL进行订购:

如果您想要按原始顺序排列(但名字在前的则为首)

  SELECT `name`
    FROM `teachers`
    WHERE `name` LIKE '{$name}%' 

  UNION

  SELECT `name`
    FROM `teachers`
    WHERE `name` LIKE '%{$name}%' ORDER BY `name`
    AND   `name` NOT LIKE '{$name}%' 

如果您希望它们在2个子集中按字母顺序排序:

  SELECT `name`, 0 `is_not_first`
    FROM `teachers`
    WHERE `name` LIKE '{$name}%' 

  UNION

  SELECT `name`, 0 `is_not_first`
    FROM `teachers`
    WHERE `name` LIKE '%{$name}%' ORDER BY `name`
    AND   `name` NOT LIKE '{$name}%' 

  ORDER BY `is_not_first`, `name`

注意-如果表很大,SQL中的这种方法比仅PHP的方法要慢,因为它基本上查询表两次。但是,在较小的桌子上也一样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

mysqli-我要搜索的名称顺序

来自分类Dev

PHP搜索功能[MySqli]

来自分类Dev

mysqli php搜索表单空白

来自分类Dev

PHP mysqli搜索多个表

来自分类Dev

PHP URL编码名称并将其存储在URL中,检索名称并在MYSQLi中搜索

来自分类Dev

PHP Mysqli 按单词的第一个字符搜索

来自分类Dev

Android SQLite按名称搜索

来自分类Dev

Bonjour:按名称搜索服务

来自分类Dev

MVC:按视频名称搜索

来自分类Dev

按 JSON 字段搜索名称

来自分类Dev

使用表格搜索mysqli表并显示结果

来自分类Dev

通过Mysqli搜索期间无结果

来自分类Dev

PHP / MYSQLI简单搜索无法正常工作

来自分类Dev

无法在mysqli中获得搜索结果

来自分类Dev

PHP MySQLi搜索不起作用

来自分类Dev

在MYSQLI中搜索GROUP_CONCAT值?

来自分类Dev

将if语句构建到mysqli搜索中

来自分类Dev

mysqli union按表排列结果

来自分类Dev

在mysqli的一列中搜索多个值,返回匹配的另一列,按出现次数排序?

来自分类Dev

如何仅按名称搜索点子包?

来自分类Dev

按名称Perl搜索XML元素值

来自分类Dev

如何按名称搜索要点

来自分类Dev

Trip Advisor API按位置名称搜索

来自分类Dev

在Seam中按特定的Cloumn名称搜索

来自分类Dev

可以按名称搜索SKSpriteNode对象吗

来自分类Dev

图像存储在磁盘上-按名称搜索

来自分类Dev

按班级名称和文本搜索

来自分类Dev

按名称搜索本地 html 文件

来自分类Dev

按名称和 ID 搜索记录