问题与运营商一样

时间:2012-09-27 15:57:53

标签: php mysql

我有这个表单,我用它来搜索数据库中的特定记录。

这是查询:

$sql = "select * from `hostess` where first_name_en like '%$term' or family_name_en like '%$term%' order by `family_name_en` asc";

问题在于,如果我搜索 ele ,那么包含 ele 的所有名称,例如 elena 等,但是如果我写 elena 什么都没有出现。

为什么

3 个答案:

答案 0 :(得分:1)

你在第一个LIKE中错过了一个%。 目前你的意思是搜索以ele结尾的任何名字。

  1. LIKE '%ele' - 将匹配以ele结尾的任何内容
  2. LIKE 'ele%' - 将匹配以ele
  3. 开头的所有内容
  4. LIKE '%ele%' - 将匹配其中的任何内容

答案 1 :(得分:0)

$sql = "select * from `hostess` where first_name_en like '%$term%' or family_name_en like '%$term%' order by `family_name_en` asc";

<强>%$术语%

使用此

答案 2 :(得分:0)

您是否有理由不在%值的末尾使用first_name_en

$sql = "select * from `hostess` where first_name_en like '%$term%' or family_name_en like '%$term%' order by `family_name_en` asc"; 

编辑:对于大写 - 小写问题:

$term = strtolower($term);
$sql = "select * from `hostess` where lower(first_name_en) like '%$term%' or lower(family_name_en) like '%$term%' order by `family_name_en` asc";