※ ChatGPTを利用し、要約された質問です(原文:phpで複数検索語をテーブル上の複数項目を対象)
phpで複数検索語をテーブル上の複数項目を対象
2012/07/02 10:30
このQ&Aのポイント
phpとMySQLの環境で複数検索語をテーブル上の複数項目を対象とした検索を実装したいです。
検索窓に半角や全角で間を空けた入力キーワードをand検索として、テーブル上の複数の項目を参照して検索結果を得たいです。
エラーが発生し、mysql_num_rows()が正しいMySQLの結果リソースでないという警告が表示されます。
php とmysqlの環境で作ってます。
以前、教えていただいた http://blog.olivesystem.com/824.html
のサイトを参考に検索キーワードをテーブル上の複数の項目にまたがって検索したい
と考え以下のように書いてみましたが、、エラーとなってしまうので、、、
アドバイスいただければと考えております。
・実現したいこと
検索窓に 半角や全角で間を空けた入力キーワードをand検索とし
テーブル上の複数の項目を参照して検索結果を得たい
例:
「バナナ りんご 千」で検索された場合
テーブルの内容
name setumei sanchi
バナナ 長い 東京
りんご 丸い 青森
スイカ 丸い 千葉
このテーブルの3つの項目を参照して検索し、実現したいことが正しく動けば。。
検索結果数 3件 となる。
理由:nameに2件 sanchiに1件 該当キーワードが存在するため
・phpの内容
*getでキーワードを取得している状態以下を書いてます。
$keywd がGETで取得したキーワードが代入されます。
試しに2つ項目で動かないか?!書いてみた状態です。
$query = "SELECT * FROM item WHERE";
if($keywd){
$str = array(" "," ", " and ", " AND ");
$keywd = str_replace($str, " ", $keywd);
if(stristr($keywd, " ")){//複数キーワードでの検索
$ex = explode(" ", $keywd);
$count = count($ex);
for($i=0; $i<$count; $i++){
if($i!="0"){
$keyand = $keyand." and";
$keyor = $keyor." or";
}
$keyand = $keyand." name LIKE '%{$ex[$i]}%'";
$keyor = $keyor." sanchi LIKE '%{$ex[$i]}%'";
$sql = $keyand.$keyor;
echo $sql;//内容確認
}
}else{//単体キーワードでの検索
$sql = " name LIKE '%{$keywd}%'";
}
}
$query1 = $query.$sql;
$result = mysql_query($query1, $db );
$num = mysql_num_rows($result);
echo "検索結果は "."<span style=\"font-size:30px;\">".$num."</span>"."件です。<br>"; ←ここがline111となります。
・表示されたエラー
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/users/xxxx/result.php on line 111
・echoで確認した内容
「ソーラ o」で検索した状態
name LIKE '%ソーラ%' Description LIKE '%ソーラ%' name LIKE '%ソーラ%' and name LIKE '%o%' Description LIKE '%ソーラ%' or Description LIKE '%o%'
よろしくお願いします。
質問の原文を閉じる
質問の原文を表示する
お礼
たすかりました! アドバイスありがとうございます。