MYSQL - 使用一个搜索字词

时间:2016-03-28 15:34:09

标签: mysql search pdo

我有一个搜索查询来搜索我的用户表以查找用户输入的搜索字词。

我的查询在3行中搜索

user_last_name
user_first_name
user_business_address

只要用户一次搜索其中一行,一切正常。

让我们说user_first_name是' Alex' and user_last_name是' Smith'。如果我搜索亚历克斯'或者'史密斯'一切正常。


问题

当用户搜索Alex Smith'一旦空格键被击中,就不再显示结果了。

如何在两行中搜索?

如何处理空白?


我的搜索查询

$term = strip_tags('%'.$_GET['term'].'%');

$query = $database->prepare("SELECT COUNT(*) FROM users WHERE user_last_name LIKE :term OR user_first_name LIKE :term OR user_business_address LIKE :term ORDER BY user_id  LIMIT 10");
$query->execute(array(':term' => $term));

$count = $query->fetchColumn();

if ($count >= 1) {
    $query2 = $database->prepare("SELECT * FROM users WHERE user_last_name LIKE :term OR user_first_name LIKE :term OR user_business_address LIKE :term ORDER BY user_id  LIMIT 10");
    $query2->execute(array(':term' => $term));

    $results = $query2->fetchAll();
}

如果您想再查看更多代码,请与我们联系。

我会非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

首先,请勿使用 formattedText = cDFormat.format(appSizeInMegaBytes); 查找完全匹配,请使用单个等号(=)。

其次,您可以使用LIKE来组合名字和姓氏:

CONCAT

我删除了最后一个条件SELECT * FROM users WHERE concat(user_first_name,' ',user_last_name) = :term ORDER BY user_id LIMIT 10 ,因为你没有解释它的用途。

如果用户输入名字/姓氏或全名,则可以使用user_business_address like :term操作LIKE通配符:

%

Here is a document on like operator

答案 1 :(得分:1)

SELECT * from users where user_first_name = SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) ,
TRIM( SUBSTR(fullname, LOCATE(' ', fullname)) ) AS last_name FROM registeredusers

你可以用substr,locate,substring_index等做一些很酷的事情。检查手册是否有些混乱。 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html