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で入力フォームでデータを確...
-
foreachがうまく動かない
-
ファイル名を変更してアップロ...
-
$a = ( $b == $c ) ? $d、 この...
-
XMLをツリー形式で表示
-
if文のなかで
-
フォームでのリセットを使う方法
-
PHPでURLにジャンプするには?
-
POSTデータのNAME属性をVALUEに...
-
ラジオボタンを押すと、表示が...
-
PHPでCookieを使った訪問回数に...
-
PHPとHTML+Xamppの掲示板で画像...
-
PHPでユーザー情報を入力して簡...
-
セッションを使わずに遷移先画...
-
エラーを元の画面に表示させるには
-
チェックボックスの必須項目指定
-
チェックボックスがチェックさ...
-
PHP・MYSQLで複数のチェックボ...
-
JavaScript変数をPHPへ渡す
-
配列をhiddenで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
PHPで入力フォームでデータを確...
-
Flaskでサーバー立ち上げに関して
-
phpで変数を使ってcopyできない
-
ファイル名を変更してアップロ...
-
PHPからHTMLへの変数の受け...
-
$_SESSIONに渡した後はそのまま...
-
テキストボックスの値を取得したい
-
openCVのトラックバーについて
-
scanfでの読み込み文字数制限
-
アップロードファイル名の文字化け
-
PHP MySql 画像を取得
-
Fortranでのファイル名操作につ...
-
ポインタ配列をfscanfで読み込...
-
UPDATEできない
-
WordのIDataObject::GetData呼...
-
C# 同じ処理をまとめたい
-
POSTの項目に追加
-
イタリア人がCatherineと聞いた...
おすすめ情報