【发布时间】:2013-04-06 07:30:25
【问题描述】:
我有文本框搜索和下拉菜单过滤的组合。 如果没有选择任何内容(第一个选项),我怎么能做到这一点 mysql select 命令不会选择它作为值并且不按该值过滤任何内容?
select * from table where A like '$A' AND B='$B' AND C='$C'
【问题讨论】:
-
如何通过仅包含应该搜索/比较的值来构建您的 sql?
我有文本框搜索和下拉菜单过滤的组合。 如果没有选择任何内容(第一个选项),我怎么能做到这一点 mysql select 命令不会选择它作为值并且不按该值过滤任何内容?
select * from table where A like '$A' AND B='$B' AND C='$C'
【问题讨论】:
$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"
首先:提问时请多注意语法,因为我个人觉得你的问题有点模糊和难以理解。
但是,如果我正确理解了您的问题,那么您应该做什么,并且在我看来这是最干净和最易读的,就是检查您的 javascript 或 PHP 代码中是否选择了任何内容,并使用两个 select 语句而不是一个。
第一个很简单
SELECT * FROM table;
第二个是过滤的选择语句。
【讨论】:
简单:
$b = isset($_POST['b']) ? mysql_real_escape_string($_POST['b']) : 'b';
如果选择了下拉列表并且不是默认值,则在查询中使用该值。如果不是,那么只需将查询设为B=B,这将始终为真。
【讨论】:
Parse error: syntax error, unexpected ';'
? 应该是:。