我有一个搜索查询来搜索我的用户表以查找用户输入的搜索字词。
我的查询在3行中搜索:
user_last_name
user_first_name
user_business_address
只要用户一次搜索其中一行,一切正常。
让我们说user_first_name是' Alex' and user_last_name是' 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();
}
如果您想再查看更多代码,请与我们联系。
我会非常感谢任何帮助!
答案 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
通配符:
%
答案 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