【问题标题】:drop down not selected - dont filter mysql php下拉未选择 - 不要过滤 mysql php
【发布时间】:2013-04-06 07:30:25
【问题描述】:

我有文本框搜索和下拉菜单过滤的组合。 如果没有选择任何内容(第一个选项),我怎么能做到这一点 mysql select 命令不会选择它作为值并且不按该值过滤任何内容?

select * from table where A like '$A' AND B='$B' AND C='$C'

【问题讨论】:

  • 如何通过仅包含应该搜索/比较的值来构建您的 sql?

标签: php mysql


【解决方案1】:
$query="select * from table where 1";

if(isset($A)&&!empty($A))
$query.=" AND A='".$A."'";

if(isset($B)&&!empty($B))
$query.=" AND B='".$B."'";

if(isset($C)&&!empty($C))
$query.=" AND C='".$C."'";

mysql_query($query);

【讨论】:

  • 这对我来说是一种魅力。只需要进行一些编辑,例如:在A=;B=;C=; 之后,您需要添加',所以它就像A='" 而不是 !empty($A) 我使用了 $A!=="firstoption"
【解决方案2】:

首先:提问时请多注意语法,因为我个人觉得你的问题有点模糊和难以理解。

但是,如果我正确理解了您的问题,那么您应该做什么,并且在我看来这是最干净和最易读的,就是检查您的 javascript 或 PHP 代码中是否选择了任何内容,并使用两个 select 语句而不是一个。

第一个很简单

SELECT * FROM table;

第二个是过滤的选择语句。

【讨论】:

    【解决方案3】:

    简单:

    $b = isset($_POST['b']) ? mysql_real_escape_string($_POST['b']) : 'b';
    

    如果选择了下拉列表并且不是默认值,则在查询中使用该值。如果不是,那么只需将查询设为B=B,这将始终为真。

    【讨论】:

    • 我知道我只是定义 $b 那样,不理会我的查询,它会做我需要的吗?如果是这样的话,那没关系,但是我在放置你的代码的车道上遇到了错误Parse error: syntax error, unexpected ';'
    • 哎呀。对不起。错字。最后的? 应该是:
    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2018-09-29
    • 2022-12-15
    • 1970-01-01
    相关资源
    最近更新 更多