現在PHP+CSVで簡易検索を作りましたが
この度それをMYSQLで実現させようかと考えていますが
以前のような単純なCSV検索と同様の事が
MYSQLのwhere句の部分で表現できなく困っています。
■data.csv
鈴木一郎,野球選手,東京都新宿区
鈴木次郎,サッカー選手,東京都新宿区
検索方法(andで絞込み)
キーワードを何も入れなければ全件出力。
たとえば検索キーとして
「鈴木」 「野球」と入れれば1行目が表示されるイメージです。
■PHP+CSV
$ArrKeyword=explode(" ",$KeyWord);
$Data=file("data.csv");
for ($i = 0; $i < sizeof($Data); $i++) {
for ($n = 0, $flag = 1; $n < sizeof($ArrKeyword); $n++) {
if (!mb_eregi($ArrKeyword[$n], $Data[$i])){
$flag = 0;
break;
}
}
if ($flag) {
$kensaku_kekka[] = $Data[$i];
}
}
■MYSQL
$ArrKeyword=explode(" ",$KeyWord);
$where = " WHERE concat(name,com,jyusho) Like '%$ArrKeyword[0]%' ";
if($ArrKeyword[1]){
for($i = 1; $i < sizeof($ArrKeyword); $i++) {
$where .= "AND (concat(name,com,jyusho) like '%$ArrKeyword[i]%' )";
}
}
$sql = "SELECT * FROM `keigyou_tbl` $where";
//select文を実行
if(!$res=mysql_query("$sql")){
echo "sql失敗";
exit;
}
■MYSQL版の場合2個目のキーワードが機能していません。
No.1ベストアンサー
- 回答日時:
>2個目のキーワードが機能していません。
「鈴木」や「野球」は、$ArrKeywordに、どのように入るのですか?
like '%鈴木%野球%'のように、キーワードとキーワードの間にも、%が入っていますか?
それと、このSQLですが、、、
WHERE concat(name,com,jyusho) Like '%$ArrKeyword[0]%'
concatなどで列を連結すると、インデクスを付けていても有効利用されないはずです。likeの中間一致も、同様に、インデクスを有効利用できません。
しかも、キーワードが多いと、andでつなぐのですか?
こういうSQLは、「性能はどうでもいい。動けばいい」という部類に入るのですが、そういうものを作りたいのでしょうか?
データが1万件以下程度で、遊びや趣味で使うのならいいですが、そうでないならDB設計を見直した方がいいでしょう。
お忙しい中ご返信を下さり本当にありがとうございます。
実は今回がはじめてのMYSQLで、今まで趣味で使っていた検索システムをMYSQLで実現させたく検討していました。
chukenkenkou様のご指摘の通り「'%鈴木%野球%'」とすることで実現できました。
非常に参考になるご意見ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlで50音順にorder byしたい。
-
LIKEの右側にカラムを指定でき...
-
PL/SQLでの文字列比較
-
SELECT、特定カラムの文字列が...
-
スペースによる絞り込み検索をS...
-
DBの定義のサイズを大きくし過...
-
INDIRECT関数の代替方法は?
-
SQLServerでNULLを挿入したいです
-
UNIONする際、片方テーブルしか...
-
ドロップダウンリストの連動し...
-
SELECT文で、指定カラム以外の...
-
GREATESTで NULLをスルーする方...
-
sql , insert で空行(全ての列...
-
MYSQLで全てのカラムから検索す...
-
[MySQL]LOAD DATA INFILE一部レ...
-
一部のカラムでdistinctし全て...
-
列を行に表示する方法は?
-
カラムをコピーして、新規カラ...
-
構造が異なる二つのテーブルをu...
-
テーブルの列数を調べたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
スペースによる絞り込み検索をS...
-
mysqlで50音順にorder byしたい。
-
複数カラムに対するLIKE文の最適化
-
whereで全てを検索する方法
-
LIKE演算子の%について教えて...
-
PL/SQLでの文字列比較
-
End Ifに対応するIfブロックが...
-
Accessで文字列の一部を抽出す...
-
SQLで条件の文字列を含んでいる...
-
複数キーワードを複数カラムに...
-
MySQLのあいまい検索について
-
SQLステータス:37000について
-
ORDER BY CASEで異なる並替え...
-
SELECT、特定カラムの文字列が...
-
SQL文に間違いがありますでしょ...
-
Access & ADOで「'」のLIKE検索
-
複数条件による検索
-
MySQL 配列もどきを条件式に
-
INDIRECT関数の代替方法は?
おすすめ情報