電子書籍の厳選無料作品が豊富!

こんにちは。

複数のキーワードの検索が出来ません。

ゲーム 無料 等のキーワードで検索した場合のwhere句とのコラボ組み合わせが出来ません。

$keyword=$_POST[1];

$rs=$DB->$query("SELECT * FROM data WHERE";
if($keyword){
$str = array(" ", " and ", " AND ");
$keyword = str_replace($str, " ", $keyword);
if(stristr($keyword, " ")){//複数キーワードの検索
$ex = explode(" ", $keyword);
$count = count($exkey);
for($i=0; $i<$count; $i++){
if($i!="0"){
$sql = $sql." and";
}
$sql = $sql." keyword LIKE '%{$ex[$i]}%'");
}
}else{//単体キーワードの検索
$sql = " keyword LIKE '%{$keyword}%'");
}
}
$query = $query.$sql;
$result = mysql_query($query);

...結果表示

これ今のソースですけど for のあたりに何か必要ない文字とか入っていますか。

色々しているうちに無駄に複雑にしてしまっているのではと言う感じもします。

A 回答 (1件)

全体のフォーマットまでみてませんが、手抜きをする方法



「WHERE 1」
としてそれにすべてANDでつないでいくのが簡単

WHERE 1 AND keyword LIKE '・・・' AND keyword LIKE '・・・' AND keyword LIKE '・・・'

逆にor検索は
WHERE 0 OR keyword LIKE '・・・' OR keyword LIKE '・・・' OR keyword LIKE '・・・'

って感じで。

ちなみにLIKE '%・・・%'はSQLとしては速度がかなり遅くなる処理なので
キーワードは正規化して行で処理するか、わかちがきして全文検索
させるのが常套。
    • good
    • 0
この回答へのお礼

ご回答有り難う御座います。

こんにちは。

これの場合は単体も複数の場合も一括に検索するみたいな感じですか。
自分も色々WHERE句では行けないかなと思い試したましたけど現在のプログラムの形がやはり言いのかなとも思いその路線に切り替えていました。

これの場合は $sql = $sql." keyword LIKE '%{$ex[$i]}%'");

の部分に埋め込むのですか。

お礼日時:2009/11/05 16:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!