2017-10-12 62 views
1

数据库:在文本框PHP-SQL LIKE子句%

+----------------------+ 
+-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 
+0

您应该从手册开始:https://dev.mysql.com/doc/refman/5.7/en/string-compa rison-functions.html#operator_like – jeroen

+0

''你是谁%'匹配任何包含'你是谁'的字符串!在你的表中,'KEYWORD'列不包含任何与'%你是谁%'匹配的字符串!相反,您应该使用'%Who%','%Where%','%are%' –

回答

1

也许你有爆炸的字符串来构建这样一个要求:

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

当你的搜索项等于Who are you,并在KEYWORD列中,您有只是问题的第一个字。我们需要将第一个单词与输入语句分开。然后使用%通配符将该第一个字与KEYWORD列进行比较。其结果可能会变成:

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

$to_compare = $exploded[0]; 

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

这只会搜索给定字符串的第一个单词。 –

+0

是的,我知道。但是从用户询问的情况来看,他似乎只想比较问题的第一个单词。 – shahsani

+0

@ nl-x在投票之前,您应该更好地理解问题,答案和整个场景。 – shahsani

0

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

$ QRY = “SELECT回答聊天WHERE关键字LIKE '%谁%' 限制0,1”;

输出: - example123