複数条件動的フィルタリング
価格: 1000 2000 3000
時刻: 2001 2002 2003
価格をクリア 時刻をクリア すべてクリア
ここで 1000 をクリックします。 内容は出てきましたが、MYSQL ステートメントが間違っているのでもう一度クリック 2001を確認したところ、2つの条件を満たす内容も表示され、SQLはエラーになりませんでした。
$result=mysql_query('select * from news_c where title='.$title.' or f_id='.$f_id.'' );
SQL を変更しないように今すぐ SQL を変更する方法原因 条件を 1 つだけクリックしたときにエラーが発生しました。
-----解決策---------
渡されたパラメータの数に従って, SQL文字列を動的に組み立てる
------解決策------------------
テスト例を示します
$jg = 配列(1000, 2000, 3000); $sj = 配列(2001, 2002, 2003); if(isset($_GET['act'])) { $k = substr($_GET['act'], 3); unset($_GET['act']); if($k == 'all') $_GET = array(); それ以外の場合は設定解除($_GET[$k]); } echo '<br>価格:'; $param = getparam('jg'); foreach($jg as $v) echo " <a href=?$param$v>$v</a>"; echo '<br>時間:'; $param = getparam('sj'); foreach($sj as $v) echo " <a href=?$param$v>$v</a>"; $param = http_build_query($_GET); echo "<p><a href=?act=deljg&$param>明確な価格</a> <a href=?act=delsj&$param>明確な時間</a> <a href=?act= delall&$param>すべてクリア</a>"; echo "<p>select * from tbl_name " . 関数 getparam($k) { $param = $_GET; if(isset($_GET[$k])) unset($param[$k]); $param[$k] = ''; http_build_query($param) を返します。 } 関数 expr($expr='and') { if(! $_GET) 戻り値 ''; foreach($_GET as $k=>$v) $r[] = "$k='$v'"; return 'where ' . join(" $expr ", $r); <div class="clear"></div>