2016-08-10 6 views
0

このSQL検索を使用して、データベース内のタイトルとアーティストを検索しています。私はフィールドに "ref.1570 title artist.mp4"のような情報を含んでいます。私が検索を行うと、それはうまくいっているが、一方向のみで、検索を行う順番どおりに結果を得たいと思っている。もし私が "アーティストのタイトル"を探していないなら、どうすればPHPのSQLを双方向で検索できるの?1つのフィールドでphpを使用して複数のSQL検索を実行する方法

ご協力いただきありがとうございます。 フィル

私はこのコードを使用しています:

if ($search != null) { 
     $sql = 'SELECT * FROM `catalog` WHERE (`file`LIKE "%' . $search . '%")'; 
     $sqlCount = 'SELECT count(*) FROM `catalog` WHERE (`file`LIKE "%' . $search . '%")'; 
    } 

答えて

-1

はmysqliの中

があるべき、マルチクエリ機能を使用します。mysqli_multi_query();あなたはspaceでキーワード$searchを分割し、クエリ内のLike文で追加していないのはなぜMysqli Multiquery

0

:上

詳細情報。例:

これは期待どおりに動作します。

0

私はあなたがforeachの周りを得ることはありませんと思う:

if ($search != null) { 
    $arrayOfSearchTerms = explode(' ', $search); 

    $sql = 'SELECT * FROM `catalog` WHERE '; 
    $sqlCount = 'SELECT count(*) FROM `catalog` WHERE '; 
    $termNumber = 0; 

    foreach ($arrayOfSearchTerms as $term) { 
     $addingSql = ''; 
     if ($termNumber > 0) { 
      $addingSql = ' OR '; 
     } 
     $addingSql .= '(`file` LIKE "%') . $term . '%")'; 
     $sql .= $addingSql; 
     $sqlCount = $addingSql; 
     $termNumber++; 
    } 
} 

あなたの検索用語を反復処理し、あなたの「LIKE'文に

+0

$ termNumberは常にゼロです。 – he11d0g

+0

あなたは正しい;)編集されました。 – legionth

0

この用語を追加する必要がありますが、この研究を試すことができますそれはすべての単語に対してLIKE%単語%を行います。あなたはより多くの強力な研究をしたい場合は、elasticsearchなどのようなツールを使用する必要があります... あなたができるこの方法:

$parts = explode(" ",$search) 
$queryParts = array(); 

foreach ($parts as $part) { 
    $queryParts[] = `artist`LIKE "%' . $part . '%" ; 
} 
// this way we can have like %artist% AND like %title% 
$querySearch= implode(" AND ", $queryParts); 

$sql = 'SELECT * FROM `catalog` WHERE (". $querySearch .")'; 
$sqlCount = 'SELECT count(*) FROM `catalog` WHERE (`". $querySearch .")'; 
0

あなたは私の問題を解決してきた私は、正しく変数に要求を爆発するHOSを知っている..

$search = $name; 
    $explode=explode(" ",$search); 

    print_r (explode(" ",$explode)); 

、その後、私はこの

$sql = 'SELECT * FROM `catalog` WHERE (`idc` LIKE "%' . $search . '%" OR `file` LIKE "%' . $search . '%" OR `title` LIKE "%' . $explode[0] . '%" AND `artist`LIKE "%' . $explode[1] . '% " OR `artist`LIKE "%' . $explode[0] . '%" AND `title`LIKE "%' . $explode[1] . '%")'; 

ように私のSQL要求を使用して、それが働いています!

クール

関連する問題