2017-10-12 11 views
1

データベースとのLIKE句:テキストボックス内PHP-SQL%

+----------------------+ 
+-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 is You% ''と一致する文字列を含んでいません!代わりに '%Who%'、 '%%'、 '%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投稿をdownvotingする前に、質問と答えとシナリオ全体をよりよく理解する必要があります。 – shahsani

0

あなたは出力

$たqry =「WHEREキーワードLIKE 『%%』 LIMIT 0,1チャットからの回答を選択」取得するには、このクエリを使用することができます。

出力: - example123

0

'%Who are You%' LIKEはここWho are You

を含む文字列をチェックします説明です:

https://www.w3schools.com/sql/sql_like.asp

また、あなたが@Ioicは

を説明したクエリを使用することができます