PHP和MySQL查询 - 多个标准

时间:2014-11-09 21:27:37

标签: php mysql

我对下面列出的代码有疑问,我根据用户可能在表单上选择的搜索条件在数据库上运行查询。

目前,仅根据作者姓名查询数据库工作正常。但是如果我取消注释其余的if-else语句,那么查询都不起作用。我刚拿回一张空白表,没有返回任何结果。

我已经单独尝试了每个if / else语句,并且其他人已经注释掉了,并且它们都可以自行运行,但是当它们全部取消注释时都不行。

有人能指出我正确的方向吗?

$query = "SELECT * FROM books WHERE book_no IS NOT NULL";


if ($_POST['author']) 
$query .= " AND '$author' = author";

/*
else if ($_POST['author'] AND $_POST['year']) 
$query .= " AND '$author' = author AND '$year' = year";
*/


/*
else if ($_POST['cover_art']) {
$query .= " AND '$cover_art' = cover_art";

}
*/

/*

else if ($_POST['interior_art']) {
$query .= " AND '$cover_art' = cover_art";

}

else {
// do something else
}
*/

1 个答案:

答案 0 :(得分:0)

检查此解决方案:

$author='Bred';
$year='2012';
$cover_art='';

$queryA=array();

if ($author<>'') $queryA []= "'$author' = author";
if ($year<>'') $queryA []= "'$year' = year";
if ($cover_art<>'') $queryA []= "'$cover_art' = cover_art";

$query = "SELECT * FROM books WHERE book_no IS NOT NULL";
if(count($queryA)>0) $query.=' AND '.implode(' AND ',$queryA);

echo $query;