我有first_name和last_name
所以这是我目前关于PHP的查询
SELECT * FROM users WHERE CONCAT_WS(first_name, " ", last_name)') LIKE $name.'%'
我的样本数据库:
firstname | lastname
-------------------------
Joe | Smith
Bien | Tibor
Brocs | Mar
Joe | Gold
这是我的测试结果
测试1:name = Joe
firstname | lastname
-------------------------
Joe | Smith
Joe | Gold
测试2:name = Smith
firstname | lastname
-------------------------
"No Results Found"
答案 0 :(得分:1)
在%
变量的任意一侧使用通配符$name
。
$sql = "SELECT * FROM `users` WHERE CONCAT(`first_name`, ' ', `last_name`) LIKE '%".$name."%'";
答案 1 :(得分:0)
在$ name的两端添加%widlcard,因此您的查询看起来像'%Smith%'
毋庸置疑,您需要考虑正确的sql清理,因此请考虑使用类似PDO的内容
答案 2 :(得分:0)
您的CONCAT_WS
语法错误
应该是
CONCAT_WS (separator, string1, string2,…)
答案 3 :(得分:0)
如果要从搜索“oe”中排除结果,则可以改为使用OR:
SELECT * FROM users WHERE firstname = ' . $name .' OR lastname = ' . $name
答案 4 :(得分:0)
首先在桌面上创建一个var $labels = $("label[for]");
$('input').map(function(){
var label = $labels.filter('[for="'+this.id+'"]');
var lang =label.attr("data-selected"),
enText = label.attr("data-en"),
frText = label.attr("data-fr");
if("en" == lang){
label.text(frText);
label.attr("data-selected", "fr")
}else{
label.text(euText);
label.attr("data-selected", "en")
}
});
索引:
FULLTEXT
ALTER TABLE `tbl`
ADD FULLTEXT INDEX `full_name` (`firstname`, `lastname`)
使用绑定参数将SELECT users.*,
MATCH(users.firstname, users.lastname)
AGAINST (? IN NATURAL LANGUAGE MODE) AS relevance
FROM users
替换为您的名称字符串。
由于此搜索将针对索引执行,因此对于大型数据集,它将比通配符字符串匹配快得多。