2017-10-12 103 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