[PHP-users 21752]Re: PHP+MySQLのand検索、or検索について

Seto seto @ 1kg.jp
2004年 5月 21日 (金) 11:16:45 JST


 Setoです。
はじめまして。
>はじめて投稿します。php初心者です。


自分の意図する動作をしないときには

>フォーム上でand、orを選んでもand検索しかしません。
>何処が悪いのかを色々調べてはみたのですが、解決には至らない状態です。


>$key = $_POST['key'];
>if ((isset($key) and strlen($key) > 0)) {
>         $key = trim($key);
>         $key = mb_convert_kana($key, "s");
>         $key = str_replace("  "," ",$key);
>         if(!strrchr($key," ")){
>      $arykey = explode(",", $key);
>      $tmpkey = "or";
>    }else{
>      $arykey = explode(" ", $key);
>      $tmpkey = "and";
>    }

var_dump( $arykey ); // <------- こことか

>
>         $where = " WHERE (( sisya Like '%$arykey[0]%' or nendo Like '%
>$arykey[0]%' or koban Like '%$arykey[0]%' or key Like '%$arykey[0]%' )";
>
>         for($i = 1; $i < sizeof($arykey); $i++) {
>                 $where .= " " . $tmpkey;
>                 $where .= " ( bsisya Like '%".$arykey[$i]."%' ";
>                 $where .= "OR bnendo Like '%".$arykey[$i]."%' ";
>                 $where .= "OR bkoban Like '%".$arykey[$i]."%' ";
>                 $where .= "OR bkey Like '%".$arykey[$i]."%') ";
>         }
>         $where .= ")";
>}
>
>$sql = "select * from koban_data" . $where . "order by id'";

echo $sql; // <------- こことか

>$rst = mysql_query("select * from koban_data".$where."order by id", $conn);
>print("<table border=\"3\" style=\"empty-cells: show\">");
>*************************************
>**

などとして 変数の中身を確認する癖をつけましょう。
# デバッグが上手になることがプログラミングの近道だと思います。
# 16進ダンプとか印刷してコードを追うなんて事しないで済むので
# PHPはデバッグも楽だと思います。

表示された内容がおかしなところから どんどんさかのぼって行けば
間違いが見つかると思います。

がんばってください。
(正直 記載されたコードは読んでません。すみません。。)
Junya Seto



PHP-users メーリングリストの案内