我正在使用一个现有的数据库,该数据库的名字和姓氏在数据库中分开。我需要创建一个函数,该函数将接受一个搜索输入并返回结果。说我的数据库有这样的结构......
nameFirst nameLast
Joe Smith
Joe Jones
Joe Brown
我怎么能使用 MySql 输入“Joe Smith”这样的搜索输入并得到他的行?但是,如果我在搜索字段中只输入“乔”,则全部返回?我需要用空格爆炸字符串吗?谢谢!
SELECT *
FROM table
WHERE CONCAT( nameFirst, ' ', nameLast ) LIKE '%Joe%'
确保清理所有用户提交的参数,例如“Joe”
SELECT * FROM table WHERE CONCAT(nameFirst, ' ', nameLast) LIKE 'Joe%';
如果您确定您的搜索输入以“Joe”开头以过滤更多内容,我建议使用此选项。
以我的拙见,在很多情况下,我们不知道搜索输入是姓名还是姓氏,所以我建议使用这个:
SELECT * FROM table WHERE CONCAT(nameFirst, ' ', nameLast) LIKE 'SEARCH_INPUT%' OR CONCAT(nameLast, ' ', nameFirst) LIKE 'SEARCH_INPUT%';
$sql = "SELECT * from add_contact WHERE ( CONCAT(first_name, ' ',last_name) LIKE '%$search%' OR first_name LIKE '%$search%' OR last_name LIKE '%$search%' OR company LIKE '%$search%') AND (archives='$archives') ORDER BY UNIX_TIMESTAMP(sort_date) DESC";