多条件动态筛选

shnep 2012-06-06 02:43:38
价格: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才不会因为只点了一个条件而出错。
...全文
636 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shnep 2012-06-06
  • 打赏
  • 举报
回复
太感谢你了!现在我是不知道怎么样把echo出来的参数放进我的MYSQL语句中啊!
xuzuning 2012-06-06
  • 打赏
  • 举报
回复
你运行给你的示例,你可以观察到下面的 sql 指令的变化
这就是你需要的格式

多条件组合时应该用 and 而不是 or 因为条件越多范围越小

替换示例中的 jg、sj 为你真实表中的字段名就可以了
shnep 2012-06-06
  • 打赏
  • 举报
回复
谢谢!这个是可以的,不过我想在这个页面中接收array中的数据再放到mysql里去读取数据库里面相关的内容,现在$result=mysql_query('select * from news_c where title='.$title.' or f_id='.$f_id.'' );这样写是不对的,我想能不能有时只有一个条件,有时又多个条件。
xuzuning 2012-06-06
  • 打赏
  • 举报
回复
给你一个测试例
$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 '<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 " . 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);
}
shnep 2012-06-06
  • 打赏
  • 举报
回复
谢谢你!我写的都不对,有没有例子之类的!
xuzuning 2012-06-06
  • 打赏
  • 举报
回复
根据传入参数的数量,动态组装 sql 串

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧