2017-03-03 2 views
1

データベースから結果を表示するための簡単な検索エンジンを作成しましたが、完全な単語ではなく類似の文字を含むすべての結果を表示する必要があります。たとえば、ユーザータイプengの場合、結果エンジンとそれ以外のengのすべての単語が返されるはずですが、現時点では、完全な単語を入力したときにのみ何かが返されます。engine.Guess私はどこかで間違いがありますが、 :私のコードがあります。SQLの "LIKE"セレクタは検索エンジンの "="のように機能します

<?php 

$fsearch = ""; 
if (!empty($_GET['fsearch'])){ 

$fsearch=$_GET['fsearch']; 

$query = "SELECT * FROM food_data_bg WHERE "; 
$terms = explode (" ",$fsearch); 
$i=0; 
foreach($terms as $each){ 
     $i++; 
    if($i == 1){ 
     $query .= "title LIKE '$each'"; 
    } 
else{ 
     $query .= "OR title LIKE '$each'"; 
    } 
} 

    $hostname = "localhost"; 
    $username = "name"; 
    $password = "pass"; 
    $databaseName = "dbName"; 
    $connect = new mysqli($hostname, $username, $password, $databaseName); 
    $connect->set_charset("utf8"); 
     $query = mysqli_query($connect,$query); 

     $num_rows = mysqli_num_rows($query); 
      if($num_rows > 0){ 
      while($row = mysqli_fetch_assoc($query)){ 
       $title = $row["title"]; 
       $fimage = $row["fimage"]; 
       $carbs = $row["carbohydrates"]; 
       $fats = $row["fats"]; 
       $proteins = $row["proteins"]; 
       $CaloriesTotal = $row["calories total"]; 
       echo " 
        <table id='table1'> 
        <tbody> 
        <tr class='Table1-row2'> 
        <td><a><img src='$fimage'</a></td> 
        <td>$title</td> 
        <td>$carbs</td> 
        <td>$fats</td> 
        <td>$proteins</td> 
        <td>$CaloriesTotal</td> 
        </tr> 
        </tbody> 
        </table>"; 
        } 
       } //got "else" claim here,but i don't think the mistake is in it... 
      } 
?> 

すべてのヘルプ、アドバイスは< 3感謝を歓迎です!

答えて

1

LIKEには正しく動作させるためにワイルドカードを含める必要があります。ですから、文字列内のその単語を探しているなら、あなたはこのような何かを行うことができ...

$query .= "title LIKE '%".$each."%'"; 

%(%)何で(どんな種類のゼロ以上の文字)と一致します。

+0

私はそれが簡単なことを知っていましたが、それは何かとのマッチのための兆候であることを知らなかった正確に私が必要なもの<3 7分でそれを受け入れるでしょう –

+0

いくつかの他のオプションがありますが、またはそれ以上の文字を含むので、文字列の先頭または末尾にも単語があります。ここにもう少し... https://www.w3schools.com/SQl/sql_wildcards.asp –

+0

ありがとうございました! –

関連する問題