如何改善自动完成%LIKE%

时间:2016-12-23 10:42:32

标签: php autocomplete

从数据库我有这样的学生记录: enter image description here

Hallticket名称 S22J79 (S-student J-job)。

此Hall门票基于studentidjobid

创建

现在我有一个自动填充功能,可根据student_fnamestudent_lname以及student_pid

检索特定学生

我的问题是如何根据总的门票号码检索学生数据

这是我的代码:

$studentsQuery =$conn->query('
select s.student_fname as label,i.email,s.student_pid,s.student_email,s.student_fname,
s.student_lname,s.profile_pic 
from 
   r_job_invitations i 
 LEFT JOIN 
   tbl_students s 
 ON 
   i.email = s.student_email 
 where 
    i.id_job = "'.$job_id.'" and 
    student_fname LIKE "'.$keysearch.'%" OR
    student_lname LIKE "'.$keysearch.'%" OR 
    student_pid LIKE "'.$keysearch.'%" ');
  

如果我输入" 22"我能够获得学生的详细信息。然后穆罕默德哇哇大哭   当我输入总票号,即S22J79时,但是   甚至不是关键词组成" 22"在它我怎么能说   系统读取" 22"从大厅门票号码。?

是否有%LIKE% ...

的高级水平

1 个答案:

答案 0 :(得分:1)

如果您知道他们正在搜索的代码总是S {student_id} J {job_id} 然后这样做:

$codeSearch = preg_replace("/(S)|(J.*)/","",$keysearch);
$studentsQuery =$conn->query('
select s.student_fname as label,i.email,s.student_pid,s.student_email,s.student_fname,
s.student_lname,s.profile_pic 
from 
   r_job_invitations i 
 LEFT JOIN 
   tbl_students s 
 ON 
   i.email = s.student_email 
 where 
    i.id_job = "'.$job_id.'" and 
    student_fname LIKE "'.$keysearch.'%" OR
    student_lname LIKE "'.$keysearch.'%" OR 
    student_pid LIKE "'.$codeSearch.'%"');

这样,如果用户只输入" S2"我认为这是对的吗?