1

私はphpとmysqlで検索エンジンを作成しようとしています。検索エンジンは複数の値を受け入れ、すべての可能な結果を​​表示できるはずです。このスレッドphp / mysqlで複数の値を検索しましたが、ある場所でグローバル変数を使用する必要がありLIKE '$search%'ます。これは私のsqlステートメントがどのように見えるかです、

SELECT name FROM product WHERE name LIKE '%$search%

変数検索が正しく宣言されているため、ゴールドチェーンなど、具体的に検索するとすべてが正常に機能します。ただし、シャツが別の製品名であるゴールドチェーンシャツなど、別の名前を一緒に検索すると、結果が表示されません。複数の値を検索して複数の結果を取得するには、sqlコマンドをどのように変更する必要がありますか?申し訳ありませんが、3層プログラミングでそれを行うように求められたことを以前に伝えませんでした。

4

4 に答える 4

2

PHP で MySQL を検索するための適切な紹介を提供する適切な記事がここにありますが、基本的にやりたいことは、検索フレーズを部分に分割し、それらを MySQL クエリで使用することです。例えば:

<?php
  $search = 'Gold Chain Shirt';
  $bits = explode(' ', $search);

  $sql = "SELECT name FROM product WHERE name LIKE '%" . implode("%' OR name LIKE '%", $bits) . "%'";

上記により、次のクエリが生成されます。

SELECT name FROM product WHERE name LIKE '%Gold%' OR name LIKE '%Chain%' OR name LIKE '%Shirt%'
于 2013-03-08T08:36:47.323 に答える
0

FULLTEXTインデックス作成を確認してから、 FULLTEXT Query Expressionsについて読む必要があります。

于 2013-03-08T08:34:35.750 に答える
0

: '%$search' を実行して、文字列の先頭からのみ検索し、より多くの結果を取得することで、検索を改善できます。

よりも、文から各単語を検索したい場合は、次のようにすることができます:

$search = 'Gold Chain Shirt';
$searches = explode(' ', $search);
$query = "SELECT * FROM product WHERE name ";
foreach($searches as $word) {
    $query .= "LIKE '%{$word}' OR ";
}
于 2013-03-08T08:37:59.830 に答える
0

私の理解が正しければ、「ゴールド チェーン」または「シャツ」という値を持つすべてのアイテムを検索する必要があります。この場合、質問に「php」のタグを付けると、$searchWHERE 句全体を変更することでこれを行うことができます。私はこれをそのように行います(アイデアを説明するためにさまざまな条件を示す例):

$search_array=array('name LIKE "%Gold Chain%"', 'price > 5');
$where=implode($search_array,' OR '); // you might wish ' AND '

some_function_to_query('SELECT name FROM product WHERE '.$where);
于 2013-03-08T08:35:11.117 に答える