试图寻找我的问题的答案。如果有人问过类似的问题,请指出我的页面。
我有一个表单,用户在一个或多个文本字段中输入搜索字词。
然后传递给SQL语句:
WHERE st.Description LIKE '%$Description%'
AND st.Number LIKE '%$Number%'
AND st.Color LIKE '%$Color%'
这将返回包含用户输入字词的所有匹配项。
有没有办法,如果用户使用引号(如“搜索词”),它会搜索完全匹配?
什么是最佳做法?
答案 0 :(得分:0)
在排除查询之前,您可以从php代码中执行此操作
假设serch字在一个名为$keyword
<?php
if(substr($keyword, 0, 1) == '"' && substr($keyword, -1, 1) ==='"'){
$search = ' = ' . substr($keyword, 1, -1);
}else{
$search = ' LIKE ' . '%' . $keyword . '%';
}
然后在查询中使用$search
变量
<?php
$sql = ... WHERE st.Description $search and st.Number $search and st.Color $search
不要忘记使用预准备语句来阻止SQL injections
对于性能问题,如果您要查找确切的字词,请勿使用LIKE
关键字,请使用=
比较符号
答案 1 :(得分:0)
有没有办法,如果用户使用引用(例如&#34;搜索词&#34;)它会搜索完全匹配?
如果您删除的引号与其搜索的内容完全相同:options
。这意味着当您提供多个单词作为搜索词时,您认为当前正在搜索无序词的存在。不是这种情况。假设您想要搜索所有单词的多个单词的短语:
org.antlr.runtime.Lexer
什么是最佳做法?
非常远离您当前正在做的事情:使用全文索引或构建您自己的关键字搜索。