• 締切済み

PHPでの複合列への検索

始めまして、現在 PHPとMySQLで検索機能でDBのリストから該当する検索ワードを表示する物を作成しています。 1つの列での検索は、問題なく検索できるのですが、別の列を検索する為には、どの様に変更または追加すれば宜しいのでしょうか? 私自身でプログラムの追加を試したのですが、一つの列しか検索されません。 PHPは、始めたばかりで余り解っていません。 現時点でのプログラムです。 <?php //Read file require_once("connectDB.php"); //Pick up data $searchSelect = $_POST['searchSelect']; $keyword = $_POST['keyword']; $keyword = ereg_replace("[ @]+", " ", $keyword); $keyword = trim($keyword); //Search words if(empty($keyword)){ print "<html>"; print "<head><title>Blank</title></head>"; print "<body>"; print "Please input search word"; print "<p><a href=\"select3.php\" target=\"_self\">To all</a><p>"; print "</body>"; print "</html>"; exit; } //Make programing $array = explode(" ", $keyword); $cnt = count($array); $where1 = "WHERE "; $where2 = "WHERE "; <-今回追加した内容です。 for($i=0; $i < $cnt; $i++){ $where1 .= "PREF_ITEM LIKE '%".$array[$i]."%'"; $where2 .= "PREF_VALUE LIKE '%".$array[$i]."%'"; <-今回追加した内容です。 if($i < $cnt-1){ $where1 .=" ".$searchSelect." "; $where2 .=" ".$searchSelect." "; <-今回追加した内容です。 } } // send query $sql1 = "SELECT * FROM KA_SP ".$where1; $sql2 = "SELECT * FROM KA_SP ".$where2; <-今回追加した内容です。 $sql1 .= " ORDER BY PREF_CD"; $sql2 .= " ORDER BY PREF_CD"; <-今回追加した内容です。 $result = executeQuery($sql1, $sql2); <-今回変更した内容です。 //Set line $rows = mysql_num_rows($result); //Show data if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "<tr>"; $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_AD1"]."</td><td>".$row["PREF_AD2"]."</td><td>".$row["PREF_ITEM"]."</td><td>".$row["PREF_VALUE"]."</td><td>".$row["PREF_SET"]."</td>"; $tempHtml .= "</tr>\n"; } $msg = $rows."Hit parameter list"; }else{ $msg = "No hit parameter"; } // Release memory mysql_free_result($result); ?> このプログラムからDBのKA_SPのテーブルの列:PREF_ITEMまたはPREF_VALUEから該当文字する検索文字の結果を表示したと思っています。 現時点では、PREF_ITEMの列のみで該当文字が検索されて結果が表示されます。 宜しくお願い致します。

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

まずはselect構文を学んでください。 http://dev.mysql.com/doc/refman/5.1/ja/select.html SQl文としては、 select * from テーブル名 where (条件) が基本です(もちろん、order by やlimitを付加する場合もあります)。 で、(条件)の部分に and や or で繋いで複数の条件を書きます(phpの条件式でも and や or で繋ぎますよね)

jirou_otk
質問者

お礼

ありがとうございます。 無事解決しました。 また何かありましたら宜しくお願い致します。