多个搜索条件的快捷方式

时间:2013-03-19 02:39:05

标签: php sql

我有一个带有3个文本框的搜索表单供用户输入。

Keyword text box
Name text box
Date text box

现在我必须制作6“if”以满足用户的选择。

有没有什么方法我不必制作这么多“if”?

示例代码,如果用户选择填写所有3个文本框:

SELECT * FROM <table> WHERE keyword=<keyword txbox> AND Name = <name txtbox> AND Date = <date txtbox>

2 个答案:

答案 0 :(得分:0)

原始例子,没有卫生处理:

<?php
$op=array('keyword','name','date');
$_POST=array('keyword'=>'a','name'=>'b','date'=>'c');

    $q="SELECT * FROM FOO WHERE ";

foreach ($op as $o){
    if(!empty($_POST[$o])){
    $q.= $o.' = "'.$_POST[$o].'" AND '; 
    }

}

$q=substr($q,0, -4);


echo $q; // SELECT * FROM FOO WHERE keyword = "a" AND name = "b" AND date = "c" 
?>

答案 1 :(得分:0)

如果是块,这个结构会让你减少到3。我不写php,所以其他人可以给你语法。

select somefields
from sometables
where 1 = 3
and 
(
if they filled out the keyword
or keyword = that variable
if they filled out the name
or name = that variable
if they filled out the date
or date = that variable
)

确保使用查询参数。还要确保您没有完成文本框的计划。最后,如果日期字段包含时间组件,请在查询中处理它。