0

紛らわしいタイトルについて申し訳ありませんが、私は初心者であり、私の問題を何と呼ぶべきかわかりません。私はビジネスリスティングWebサイトを作成するために構築(well..trying)しており、テーブルから結果を取得するこの検索スクリプトを見つけました。そこで、これを貼り付けて試してみましたが、一度に1つのフィールドしか検索できず、2つのフィールドを同時に検索することはできません。フィールド「company_name」からのデータのみが再調整されます。ただし、これを柔軟にして、フィールド名「categories」から検索するように追加する必要があるため、要するに、「company_name」と「categories」フィールドの2つの行を検索するためにPHPが必要です。

これがスクリプトですが、構文を追加する方法がわかりません。

       $keywords = preg_split('/[\s]+/',$keywords); 
       $total_keywords = count($keywords); 

         foreach($keywords as $key=>$keyword) {
        $where .= "`company_name`  LIKE  '%$keyword%'   ";
        if($key != ($total_keywords - 1)) {
        $where .= " AND ";

    }

問題はここにあります:$where .= "company_nameLIKE '%$keyword%' ";

ここでスクリプト全体を見る必要がある場合は、ここにあります。

        function search_clients($keywords){

$returned_results = array();
$where = "";

$keywords = preg_split('/[\s]+/',$keywords);    
$total_keywords = count($keywords); 

foreach($keywords as $key=>$keyword) {
    $where .= "`company_name`  LIKE  '%$keyword%'   ";
    if($key != ($total_keywords - 1)) {
        $where .= " AND ";

    }
}

$results = "SELECT `company_name`, LEFT(`company_details`,150)
    as `company_details`, `category` FROM `clients`
    WHERE $where";
$results_num = ($results = mysql_query($results)) ?  mysql_num_rows($results) : 0 ;


if($results_num === 0) {
    return false; 
} else {

    while($results_row = mysql_fetch_assoc($results)) {

    $returned_results[] = array(

    'company_name'  => $results_row['company_name'],
    'company_details'  => $results_row['company_details'],



    );
}

return $returned_results;

}


}
4

2 に答える 2

1

これはPHPで書かれていますか?どのタイプのデータベースにも接続していますか?これらの情報は役に立ちます!クエリがどのように構成されているかについて、さまざまなデータベースが気になる場合があります。

それでもなお、このコードを試して、目的の結果が得られるかどうかを確認してください。

foreach($keywords as $key=>$keyword) {
    $where .= "(   `company_name`  LIKE  '%$keyword%'   "
           .  " OR `categories`    LIKE  '%$keyword%'  )";
    if($key != ($total_keywords - 1)) {
        $where .= " AND ";

    }
}
于 2012-11-04T01:48:40.947 に答える
1

この場合、そのような括弧でORを使用できます

$where .= "(`company_name`  LIKE  '%$keyword%' OR `category`  LIKE  '%$keyword%')   ";
于 2012-11-04T01:48:49.210 に答える