PHP-SQL LIKE子句,带%

PHP-SQL LIKE子句,带%,php,mysql,Php,Mysql,数据库: +----------------------+ +-KEYWORD-|-ANSWER-----+ +----------------------+ +hi,hello | Hey + +Who,where| example123 + +----------------------+ 文本框中的用户输入: Who are you SQL查询 SELECT answer FROM chat WHERE keyword LIKE '%Who are You%' LIMIT

数据库:

+----------------------+
+-KEYWORD-|-ANSWER-----+
+----------------------+
+hi,hello | Hey        +
+Who,where| example123 +
+----------------------+
文本框中的用户输入:

Who are you
SQL查询

SELECT answer FROM chat WHERE keyword LIKE '%Who are You%' LIMIT 0,1
我得到的输出是空白的

预期产出:

example123

可能您必须分解字符串以生成如下请求:

SELECT answer FROM chat WHERE keyword LIKE '%Who%' OR keyword LIKE '%are%' OR keyword LIKE '%you%' LIMIT 0,1

可能您必须分解字符串以生成如下请求:

SELECT answer FROM chat WHERE keyword LIKE '%Who%' OR keyword LIKE '%are%' OR keyword LIKE '%you%' LIMIT 0,1

虽然您的搜索词等于
您是谁
,但在
关键字
列中,您只有问题的第一个单词。我们需要将第一个单词从输入语句中分离出来。然后使用
%
通配符将第一个单词与
关键字
列进行比较。结果可能是:

$input = $_POST['textInput'];
$exploded = explode(' ', $input);

$to_compare = $exploded[0];

$q = "SELECT answer FROM chat WHERE keyword LIKE '%$to_compare%' LIMIT 0,1";

虽然您的搜索词等于
您是谁
,但在
关键字
列中,您只有问题的第一个单词。我们需要将第一个单词从输入语句中分离出来。然后使用
%
通配符将第一个单词与
关键字
列进行比较。结果可能是:

$input = $_POST['textInput'];
$exploded = explode(' ', $input);

$to_compare = $exploded[0];

$q = "SELECT answer FROM chat WHERE keyword LIKE '%$to_compare%' LIMIT 0,1";

您可以使用此查询获取输出

$qry=“从聊天室中选择答案,其中关键字“%Who%”限制为0,1


输出:-例如123

您可以使用此查询获取输出

$qry=“从聊天室中选择答案,其中关键字“%Who%”限制为0,1


输出:-例如123

'%Who are You%'
将检查包含
Who are You

解释如下:


您还可以使用@Ioic解释的查询,如
'%Who is you%'
将检查包含
Who is you

解释如下:


您还可以使用@Ioic解释的查询,您应该从手册开始:
'%Who is you%'
匹配任何包含“Who is you”的字符串!在您的表中,
关键字
列不包含任何与
'%Who is You%'
匹配的字符串!相反,你应该使用
%Who%
%Where%
%are%
你应该从手册开始:
'%Who is you%'
匹配任何包含“Who is you”的字符串!在您的表中,
关键字
列不包含任何与
'%Who is You%'
匹配的字符串!相反,您应该使用
%Who%
%Where%
%are%
这将只搜索给定字符串的第一个单词。是的,我知道。但是从用户询问的情况来看,他似乎只对问题的第一个单词感兴趣。@nl-x在对帖子进行否决投票之前,你应该更好地理解问题、答案以及整个场景。这只会搜索给定字符串的第一个单词。是的,我知道。但是从用户询问的情况来看,他似乎只对问题的第一个单词感兴趣。@nl-x在对帖子进行否决投票之前,你应该更好地理解问题、答案以及整个场景。