这是我要问的页面:
http://rdavidbeales.com/archiveprototype/advancedsearch.php
通过使用从建设性批评到原始帖子的术语进行一些搜索,我得到了忽略NULL
变量的查询。
现在唯一的问题是我不能在AND
变量的定义中包含$where
语句,因为如果只选择了一个字段,那么我会得到一个无意义{{1}的错误声明。
AND
?使用此链接Possible to have PHP MYSQL query ignore empty variable in WHERE clause?我已经提供了以下代码:
AND
以下是使用$anf = $_POST["artistnameform"];
$df = $_POST["decadeform"];
$stf = $_POST["subjecttermform"];
$ptf = $_POST["phototitleform"];
$where = "WHERE";
if(!empty($ptf)){
$where .= " P.PhotoTitle='$ptf '";
}
if(!empty($anf)){
$where .= " PE.idPeople = '$anf '";
}
if(!empty($stf)){
$where .= " S.idSubjectTerm = '$stf '";
}
if(!empty($df)){
$where .= " P.PhotoCreatedDate LIKE CONCAT ('%', '$df ', '%')";
}
的查询:
$where
答案 0 :(得分:1)
使用一系列条件,然后在
之间将它们与' AND '
连接起来
$wheres = array();
if(!empty($ptf)){
$wheres[] = " P.PhotoTitle='$ptf '";
}
if(!empty($anf)){
$wheres[] = " PE.idPeople = '$anf '";
}
if(!empty($stf)){
$wheres[] = " S.idSubjectTerm = '$stf '";
}
if(!empty($df)){
$wheres[] = " P.PhotoCreatedDate LIKE '%{$df} %')";
}
$where = implode(' AND ', $wheres);
我也摆脱了你的CONCAT
功能,因为它是多余的。
此外:
LIKE
。如果编入索引,搜索时间值可以很快,但这样的LIKE
运算符会杀死所有性能。mysql_...
个功能。它们已被弃用,将来会被删除。