我尝试对数据库创建高级搜索。
我想做这样的事情:如果用户的搜索类型= overf**w
并且在我的数据库中有一个Cloumn,他的值= overflow
-向他展示。
这是我的代码:
$name = str_replace('*', '_', $name);
SELECT name FROM table WHERE name LIKE CONCAT('%', ?, '%')
它不起作用,我不知道是什么问题。
答案 0 :(得分:0)
在这种情况下,您不能使用LIKE,需要使用REGEXP()进行通配符搜索。用.*
替换*或**。要仅返回以给定值开头的名称,请在正则表达式的开头使用^
SELECT name
FROM actors
WHERE name REGEXP('^overf.*w')
我不了解php,但您的$ name参数应设置为这样(用伪代码)
$name = '^' + replace($name, '**', '.*')