如何在查询字符串中进行精确的模式匹配

时间:2014-03-05 09:58:58

标签: php mysql sql regex

我有我的网站,我想为用户添加搜索功能。我的搜索条件是First namelast Name,在mysql数据库中有两个不同的列。

例如:如果用户在搜索框中输入了xxx (名字) yyy (姓氏),则结果如下:< / p>

  1. 如果与这两个字符串完全匹配,则只需要一个结果 来自数据库。

  2. 如果不匹配则只需从数据库中包含来。 (例如 xx存在然后它必须来)

  3. 我使用了以下查询:

    Select * from  mytable where FirstName like '%".$fname."%' or LastName like '%".$lname."%' order by DtLastModified desc 
    

    它给了我所有匹配此字符串的结果。

    例如

      

    xxx yyy

         

    xx yy

         

    x y

         

    X

         

    ý

    任何人都可以帮助我。

2 个答案:

答案 0 :(得分:0)

对于:如果与这两个字符串完全匹配,那么只有一个结果必须来自数据库 将您的查询从'或'替换为'和'喜欢

Select * from  mytable where FirstName like '%".$fname."%' and LastName like '%".$lname."%' order by DtLastModified desc 

答案 1 :(得分:0)

这可能有效,替换$ fname $ lname

的php变量
SELECT * FROM mytable
WHERE CONCAT(firstname, '', lastname) LIKE '%".$fname.$lname."%' 
OR (firstname LIKE '%".$fname ."%' OR lastname LIKE '%". $lname ."%')