MySQL从两列中搜索文本
我有一张像这样的桌子(tbl_world)MySQL从两列中搜索文本,mysql,regex,Mysql,Regex,我有一张像这样的桌子(tbl_world) id | first_name | last_name | age | class | 现在我想搜索文本,它可以是名字或姓氏中的任何位置 我正在使用下面的mysql查询 "SELECT * FROM tbl_world WHERE REGEXP '".$word."' IN( first_name, last_name)"; 其中,$word是用户输入(意味着如果我搜索'hell',那么'hello'以及'wellhell'也会在结果中返回)
id | first_name | last_name | age | class |
现在我想搜索文本,它可以是名字或姓氏中的任何位置
我正在使用下面的mysql查询
"SELECT * FROM tbl_world WHERE REGEXP '".$word."' IN( first_name, last_name)";
其中,$word
是用户输入(意味着如果我搜索'hell',那么'hello'以及'wellhell'也会在结果中返回)
以上查询显示错误,请建议我优化mysql中的搜索方法
添加问题:我应该使用LIKR还是RLIKE
"SELECT * FROM tbl_world
WHERE first_name LIKE '%".$word."%'
OR last_name LIKE '%".$word."%'";
(如果要在多个字段中搜索字符串,请考虑启用全文搜索。)我会使用以下方法:
"SELECT * FROM tbl_world WHERE first_name REGEXP '" . $word .
"' OR last_name REGEXP '" . $word . "'"
您必须转义、过滤或绑定
$word
,以防止SQL注入。
"SELECT * FROM tbl_world WHERE first_name LIKE '%'".$word."%' OR last_name LIKE '%".$word."%'"