【问题标题】:Search for multiple terms in multiple columns在多个列中搜索多个术语
【发布时间】:2012-12-03 23:36:11
【问题描述】:

我有一个搜索用户名的搜索表单。问题是,在我的数据库中,我有一个单独的名字和姓氏列。这就是我的查询当前的样子(这是在 PHP 脚本中,$term 是搜索输入):

SELECT * FROM profiles WHERE firstname LIKE '%$term%' OR lastname LIKE '%$term%'

当用户只输入名字或姓氏时,这可以正常工作,但对于诸如“John Smith”之类的全名,这将不起作用。

如何修改我的查询和/或 php 脚本以有效地解决此问题?例如,我应该先拆分字符串,还是等等?

【问题讨论】:

    标签: php sql search


    【解决方案1】:

    你可以这样做

    WHERE firstname||' '||lastname LIKE '%$term%'
    

    将名字加空格加姓氏与%$term% 进行比较。

    但是,您不应该使用变量构建 SQL 查询。您应该通过 PDO 使用参数化查询。有关示例,请参阅http://bobby-tables.com/php.html

    【讨论】:

    • 不幸的是,这对我不起作用。我现在使用 MATCH 和 AGAINST,但缺点是“artin”一词不会在结果中显示“Martin”,但至少“marti”会显示。是的,我不是为了简单起见而使用 PDO,我通常使用 mysqli 准备好的语句:)
    • 但是你没有使用准备好的语句,或者如果你使用了,你没有正确地使用它,因为你是从程序外部的变量构建你的 SQL 语句。
    • 我知道。我“通常”使用准备好的语句,但我没有在这里使用它,只是因为我不会被打扰并且因为它对我想知道的内容没有影响:查询结构
    猜你喜欢
    • 2011-03-12
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2012-12-09
    • 2014-03-13
    相关资源
    最近更新 更多