![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
php とmysqlの環境で作ってます。
以前、教えていただいた http://blog.olivesystem.com/824.html
のサイトを参考に検索キーワードをテーブル上の複数の項目にまたがって検索したい
と考え以下のように書いてみましたが、、エラーとなってしまうので、、、
アドバイスいただければと考えております。
・実現したいこと
検索窓に 半角や全角で間を空けた入力キーワードをand検索とし
テーブル上の複数の項目を参照して検索結果を得たい
例:
「バナナ りんご 千」で検索された場合
テーブルの内容
namesetumeisanchi
バナナ長い東京
りんご丸い青森
スイカ 丸い千葉
このテーブルの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%'
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>name LIKE '%ソーラ%' Description LIKE '%ソーラ%' name LIKE '%ソーラ%' and name LIKE '%o%'
>Description LIKE '%ソーラ%' or Description LIKE '%o%'
これを見れば一目瞭然だと思いますが、条件が正しく作成できていません。なのでmysql_queryの時点で戻り値がfalseのハズです。なぜチェックしていないのでしょうか(デバッグ時ならor dieで止めるだけでもいいのに)。
>$sql = $keyand.$keyor;
and条件で繋いだ条件(name)とor条件で繋いだ条件(Description)は、どう繋ぐのですか?それによって(たとえばand条件なら)
$sql = '(' . $keyand . ')and(' . $keyor . ')';
などと書かないといけません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
INSERT,DELETEを同時に
-
<VB.NET>INSERT文でDBにデータ...
-
チェックボックスからの複数検...
-
php MySQL で、更新ボタンを押...
-
ResultSetインターフェイスでの...
-
insert1つの処理でもトランザ...
-
VB.NET エラーになる箇...
-
cakePHPでSQLが実行できない。
-
like検索の複数キーワードで、...
-
配列データのレコード登録
-
phpmyadminにタグを格納するには
-
VBA ACCESS SQL...
-
phpで複数検索語をテーブル上の...
-
実行時エラー3131 FROM 句の構...
-
MySQLでデータベースにデータin...
-
phpでmysqlを使ってデータベー...
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
VBAをつかってクエリの情報を抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
<VB.NET>INSERT文でDBにデータ...
-
ResultSetインターフェイスでの...
-
Pro*Cの構文エラー
-
insert1つの処理でもトランザ...
-
データベースに存在するデータ...
-
VBA ACCESS SQL...
-
INSERT,DELETEを同時に
-
MySQLのINSERT時にたまに重複に...
-
VB.NET エラーになる箇...
-
PHP&MySQLでの文字列+数列の一...
-
PHP初心者です。syntax error, ...
-
php MySQL で、更新ボタンを押...
-
like検索の複数キーワードで、...
-
php postgres Insert と updat...
-
ASPでSQL文を使う場合に。
-
チェックボックスからの複数検...
-
Q&Aサイトを作成していてURLの...
-
php データベースから値を取得する
-
phpでforeach ($stmt as $row)...
おすすめ情報