-3

これは私のSQLクエリです。検索を使用して名と姓を検索する必要があります。

$result =  'SELECT * FROM resume 
            WHERE   (first_name LIKE "'.$sKeyword.'%" OR 
                     last_name LIKE "'.$sKeyword.'%" OR
                     CONCAT(first_name," ",last_name) like "'.$sKeyword.'%" OR 
                     email LIKE "'.$sKeyword.'%" OR 
                     phone LIKE "'.$sKeyword.'%" OR 
                     zip_code LIKE "'.$sKeyword.'%" OR 
                     find_us LIKE "'.$sKeyword.'%" )';
4

4 に答える 4

0

これを試して

      $seresult='SELECT * FROM resume 
            WHERE   (first_name LIKE "%'.$sKeyword.'%" OR 
                             first_name LIKE "'.$sKeyword.'%" OR 
                             first_name LIKE "%'.$sKeyword.'" OR 
                            last_name LIKE "%'.$sKeyword.'%" OR
                            last_name LIKE "'.$sKeyword.'%" OR
                            last_name LIKE "%'.$sKeyword.'" OR
                            email LIKE "%'.$sKeyword.'%" OR 
                            phone LIKE "%'.$sKeyword.'%" OR 
                            zip_code LIKE "%'.$sKeyword.'%" OR 
                            find_us LIKE "%'.$sKeyword.'%" )';
于 2013-04-09T10:17:30.250 に答える
0

クエリを実行する前に、テーブルにデータが存在することを確認してください。

以下のようなものを試してください:

$fullName = "john martin";
$nameArray = explode(" ",$fullName);
if(count($nameArray)>1)
  $search = " first_name in (".implode(',',$nameArray).") OR last_name in (".implode(',',$nameArray).")";
else
  $search = " first_name LIKE "%'.$sKeyword.'%" OR last_name LIKE "%'.$sKeyword.'%" OR"

$seresult='SELECT * FROM resume 
            WHERE   ('.$search.'
                     email LIKE "%'.$sKeyword.'%" OR 
                     phone LIKE "%'.$sKeyword.'%" OR 
                     zip_code LIKE "%'.$sKeyword.'%" OR 
                     find_us LIKE "%'.$sKeyword.'%" )';

編集:あなたのコメントに従って、クエリを更新しました

于 2013-04-09T10:11:13.263 に答える
0

OR を異なる UNIONed クエリに分割すると、MySQL はそのインデックスをより効率的に使用できるようになります。

入力した語句だけで始まる商品を探していると思います。検索フレーズにスペースがある場合、first_name と last_name の組み合わせ検索のみを実行するため、これが役立つ場合があります。

$result =  "SELECT * FROM resume 
            WHERE   first_name LIKE '$sKeyword%' 
            UNION
            SELECT * FROM resume 
            WHERE   last_name LIKE '$sKeyword%' 
            UNION
            SELECT * FROM resume 
            WHERE   email LIKE '$sKeyword%'
            UNION
            SELECT * FROM resume 
            WHERE   phone LIKE '$sKeyword%'
            UNION
            SELECT * FROM resume 
            WHERE   zip_code LIKE '$sKeyword%'
            UNION
            SELECT * FROM resume 
            WHERE   find_us LIKE '$sKeyword%'
            UNION
            SELECT * FROM resume 
            WHERE   CONCAT(first_name,' ',last_name) like '$sKeyword%'";

$sKeywordArray = explode(' ', $sKeyword);
IF (count($sKeywordArray) > 1)
{
    $result2 = array();     
    foreach($sKeywordArray $value)
    {
        $result2[] = "(first_name like '$value%' OR last_name like '$value%')";
    }
    $result .= " UNION SELECT * FROM resume WHERE ".implode(' AND ', $result2)
}
于 2013-04-09T10:33:47.340 に答える