複数条件の動的フィルタリングを処理する方法

WBOY
リリース: 2016-06-13 13:28:39
オリジナル
1432 人が閲覧しました

複数条件動的フィルタリング
価格: 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文字列を動的に組み立てる
------解決策------------------
テスト例を示します

PHP コード
$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>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート