こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

部分一致検索ができなくて困っています。

※部分一致検索ができなくて困っています。

※Apache2.0.52 + MySQL 5.0.51a + PHP5.2.8の環境です。

" sprintf "を使った、下記コードで部分一致検索をするには、どのようにしたらい
いのか、どなたかご教授いただけないでしょうか。
--------------------------------------------------------------------------
$u_address = $_REQUEST['u_address'];// POSTで送られてきた値を受け取り変換。

検索fieldは、"u_address"です。
--------------------------------------------------------------------------
$query = sprintf("SELECT * FROM dive_free_tbl_ WHERE u_address = '%s' ORDER BY serial DESC", $u_address);

※上記のコードだと、"完全一致"にて検索となります。(部分一致の検索にしたい)



下記のコードに変更して、見たのですがエラーにでダメでした。(WHERE以下を抜粋)

WHERE u_address = '%s' ORDER BY serial DESC", LIKE'%$u_address%');
WHERE u_address = '%s' ORDER BY serial DESC", LIKE'[%$u_address]%'');
WHERE u_address = '%s' ORDER BY serial DESC", LIKE'{%$u_address}%'');

WHERE u_address '%s' ORDER BY serial DESC", LIKE'%$u_address%');
WHERE u_address '%s' ORDER BY serial DESC", LIKE'[%$u_address]%'');
WHERE u_address '%s' ORDER BY serial DESC", LIKE'{%$u_address}%'');


" sprintf "を使わず、下記のコードでは問題なく部分一致検索ができます。
--------------------------------------------------------------------------
$sql = "SELECT * FROM dive_free_tbl_ WHERE u_address LIKE'%東%'";
--------------------------------------------------------------------------


何方かご教授いただきたく、よろしくお願いします。

以上

投稿日時 - 2009-05-17 12:43:39

QNo.4966017

困ってます

質問者が選んだベストアンサー

すみません。書き方が悪かったです。
>query = sprintf("SELECT * FROM dive_free_tbl_ WHERE u_address = '%s' ORDER BY serial DESC", $u_address);
WHERE句の「=」を「LIKE]に変えてください。
「=」は完全一致、「LIKE」は部分一致の検索をします。

投稿日時 - 2009-05-17 17:11:19

補足

※ご教授いただいたとおり、" = "を" LIKE "に変更した場合、エラー無く検索できました。
本当にありがとう御座います。

1)" = "を" LIKE "に変更。
2)「 $u_address 」を「"%$u_address%"」に変更。

これで、バッチリでした。本当にありがとう御座います。

今後もお世話になることがあるかと思いますが、よろしくお願いします。

本当にありがとう御座いました。

投稿日時 - 2009-05-17 19:34:40

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんにちわ
>$query = sprintf("SELECT * FROM dive_free_tbl_ WHERE u_address = '%s' ORDER BY serial DESC", $u_address);
↑「WHERE u_address = '%s' 」とWHERE句が「=」になっているからではないかと思われます。

投稿日時 - 2009-05-17 13:05:29

補足

こんちには、回答を頂きありがとう御座います。
指摘いただいた、「=」を取っていろいろとやってみましたが、
「部分一致検索」は、どうにも実現できませんでした。

実行した内容は、質問の文章にも書きましたが、
WHERE u_address '%s' ORDER BY serial DESC", LIKE'%$u_address%');
WHERE u_address '%s' ORDER BY serial DESC", LIKE'[%$u_address]%'');
WHERE u_address '%s' ORDER BY serial DESC", LIKE'{%$u_address}%'');
を実行してみました。(WHERE以降を抜粋)

エラーが表示されて、部分一致検索はできませんでした。

何か、いい方法がありましたらお願いいたします。

投稿日時 - 2009-05-17 13:18:59

あなたにオススメの質問