PHPの勉強をしています。
簡単なPHPを作成し、MySQLからデータを持ってきたいのですが、
上手くいきません。
完全一致で入力すれば、該当するものがヒットしますが、部分一致となると何も表示されなくなってしまいます。
検索文字列 = 山田太郎 →検索OK
検索文字列 = 山田 →検索NG
となります。
山田と入力すれば、該当するデータを全て表示するにはどうすればいいのでしょうか。
宜しくお願いします。
//名前
if(!empty($name)) {
$name = addslashes($name);
$where = "name = '$name' && ";
} else if(preg_match("/^(?!ab$)[a-z0-9]+$/", $name)) {
$name = addslashes($name);
$where = "name = '$name' && ";
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>インデックスを付けて、検索スピードを早くする方法はあるのでしょうか。
厳密にいうとない事はないです。
たとえば全文検索やキーワードを別テーブルに保存するなど
また1万件前後であればMyISAMで処理すれば気にならないスピードかもしれません。
SQLのLIKE検索も、前方一致もしくは後方一致のどちらかだけなら
インデックスが有効です。
いずれにしろ特定の文字が現れるをチェックするというのは
SQLの得意分野ではありませんので、そういうものだと割り切って管理するしかありません
No.3
- 回答日時:
>以下のようにしてみたのですが、検索がヒットしません。
(略)
>$where = "SELECT * FROM name WHERE name LIKE %$name% && ";
書くとしたら、likeのあとは文字列なんだから単引用符で括って
$where = "SELECT * FROM `name` WHERE (`name` LIKE '%$name%')";
(and は次の条件を付加するときに追加した方がベター)
じゃないんですかねぇ。それ以前にaddslashesというのはどういう意図なのか・・・。MySQL関数ならmysql_real_escape_stringを使うべき。
まぁそれ以前にMySQL関数自体が非推奨なんだから、プリペアドステートメント(が利用できるPDOなど)を使って
$where = "SELECT * FROM `name` WHERE (`name` LIKE ? )";
としてからbindParamで$nameを渡せばいいと思う。
No.1
- 回答日時:
SQLで部分一致検索をする場合は like 句を使用します。
select ・・・・・・ where name like '%山田%';
といった感じで検索すると部分一致になります。
この回答への補足
以下のようにしてみたのですが、検索がヒットしません。
どこが違うのでしょうか。宜しくお願いします。
if(!empty($name)) {
$name = addslashes($name);
$where = "SELECT * FROM name WHERE name LIKE %$name% && ";
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングC++のmapについて
-
SQLインジェンクション対策法を...
-
ループ処理された中でfile_exis...
-
フォームで送られてきたメール...
-
【PHP】「\\"」が面倒くさい...
-
プログラミング初心者です
-
$_SESSIONに渡した後はそのまま...
-
ユーザー登録画面
-
引数と変数について
-
パラメータを2個つけたい
-
if文のなかで
-
VBA で、スペースを含むファイ...
-
複数チェックボックスの入力制...
-
現在時刻を反映させた時刻のプ...
-
自作PHPブログでの記事を5件ず...
-
チェックボックスによる検索
-
ラジオボタンをsessionで使いたい
-
昭和40年の現金書留での送金...
-
PHPでURLにジャンプするには?
-
チェックボックスのうちひとつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
Flaskでサーバー立ち上げに関して
-
POSTの項目に追加
-
ファイル名を変更してアップロ...
-
PHPで入力フォームでデータを確...
-
foreachがうまく動かない
-
PHP MySql 画像を取得
-
phpで変数を使ってcopyできない
-
PHPからHTMLへの変数の受け...
-
サブフォルダ内の全てのテキス...
-
UPDATEできない
-
php+mysqlでの重複チェックにつ...
-
phpでショッピングカート機能を...
-
fputcsv()で1レコード1行になる...
-
openCVのトラックバーについて
-
$a = ( $b == $c ) ? $d、 この...
-
if文のなかで
-
配列の値
-
sqlite文字列を格納、出力
-
ファイルアップローダーで送信...
おすすめ情報