• 技术文章 >后端开发 >php教程

    多条件动态筛选,该如何处理

    2016-06-13 10:26:19原创350
    多条件动态筛选
    价格:1000 2000 3000
    时间:2001 2002 2003
    清除价格 清除时间 全部清除

    现在点1000 已经有内容出来,不过MYSQL语句错误,再点一下2001,符合两个条件的内容也出来了,SQL没有提示错误。

    $result=mysql_query('select * from news_c where title='.$title.' or f_id='.$f_id.'' );
    现在要怎么样改sql才不会因为只点了一个条件而出错。

    ------解决方案--------------------
    根据传入参数的数量,动态组装 sql 串
    ------解决方案--------------------
    给你一个测试例
    PHP code
    $jg = array(1000, 2000, 3000);$sj = array(2001, 2002, 2003);if(isset($_GET['act'])) {  $k = substr($_GET['act'], 3);  unset($_GET['act']);  if($k == 'all') $_GET = array();  else unset($_GET[$k]);}  echo '
    价格:';$param = getparam('jg');foreach($jg as $v) echo " $v";echo '
    时间:';$param = getparam('sj');foreach($sj as $v) echo " $v";$param = http_build_query($_GET);echo "

    清除价格 清除时间 全部清除";echo "

    select * from tbl_name " . expr();function getparam($k) { $param = $_GET; if(isset($_GET[$k])) unset($param[$k]); $param[$k] = ''; return http_build_query($param);}function expr($expr='and') { if(! $_GET) return ''; foreach($_GET as $k=>$v) $r[] = "$k='$v'"; return 'where ' . join(" $expr ", $r);}

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:param quot GET gt lt

    相关文章推荐

    • 一文带你了解PHP中的文件与目录操作• php邮件发送,php发送邮件的类_PHP教程• PHP.MVC的模板标签系统(一)_PHP教程• php析构函数用法分享 • 使用Sphinx对索引进行搜索_php技巧
    1/1

    PHP中文网