
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ランキング
-
【PHP】PHPでそのファイルが格...
-
name属性が全角の場合・・・
-
VBA で、スペースを含むファイ...
-
phpでランダムにページを表示
-
配列の値
-
preg_replaceを使って特定の文...
-
【かなり初歩的な質問です】php...
-
$_SESSIONに渡した後はそのまま...
-
PHP初心者です。JSONが参照でき...
-
PHP MySql 画像を取得
-
phpでMysqlに接続し掲示板を作...
-
PHPでURLにジャンプするには?
-
配列をhiddenで
-
POSTの値を配列として受け取っ...
-
FireFoxでのセッションの挙動が...
-
local環境でのテストで、FORMタ...
-
POSTできない
-
カウンタのリセット
-
リストボックス 複数選択のデ...
-
検索時の選択内容を保持する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
Flaskでサーバー立ち上げに関して
-
POSTの項目に追加
-
PHPでParse errorについて
-
ファイル名を変更してアップロ...
-
header()関数について
-
sqlite文字列を格納、出力
-
phpで変数を使ってcopyできない
-
初心者です。入力フォームのp...
-
重複を防ぐ記述について教えて...
-
scanfでの読み込み文字数制限
-
$_SESSIONに渡した後はそのまま...
-
PDO学び始めました
-
PHP MySql 画像を取得
-
php、sqlite3にデーター追加で...
-
if function PHP
-
複数条件での検索について教え...
-
$_REQUESTの意味を教えて下さい
-
Emacs Lisp: 関数に引数が渡せ...
-
php+mysqlでの重複チェックにつ...
おすすめ情報