PHP高级搜索

时间:2012-05-07 12:09:15

标签: php mysql

我一直在绞尽脑汁,似乎无法解决这个问题。我甚至不确定要求谷歌获得解决方案的一些想法的正确方法,所以我问你。我正在尝试使用“高级搜索”表单来搜索数据库,但是如果输入字段为空则忽略它。

我的sql:

$sql  = "SELECT * FROM msds WHERE MIS = {$MIS}"; 
if(!empty($input01)) { $sql .= "AND column01 LIKE '%" . $input01. "%' AND    column05 LIKE '%" . $input05. "%'" }
if(!empty($input02)) { $sql .= "OR column02 LIKE '%" . $input02. "%'" }
if(!empty($input03)) { $sql .= "OR column03 LIKE '%" . $input03. "%'" }
if(!empty($input04)) { $sql .= "OR column04 LIKE '%" . $input04. "%'" }
$sql .= "ORDER BY column01";
$sql .= "LIMIT {$per_page} OFFSET {$pagination->offset()}";

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

看看你要推出的最终SQL。如果不出意外的话,它会读到像OR column03 LIKE '%something%'OR column04 LIKE '%something%'ORDER BY column01LIMIT ...这样的错误 - 错误很多! - 因为你没有在连接的各个部分之间放置空格。

答案 1 :(得分:1)

请尝试这样的事情 -

$qry = "SELECT * FROM msds WHERE ";
if ($input01 != '') {
    $qry .= "input01='".mysql_real_escape_string($input01)."' AND "
}
if ($input02 != '') {
    $qry .= "input02='".mysql_real_escape_string($input02)."' AND "
}
$qry .= '1';
$res = mysql_query($qry);

根据设置的内容构建查询。