我有一个带有分页的搜索/过滤表单,所以我必须使用 $_GET 来获取 url 中的参数。现在我想使用还准备好的语句更安全。
问题是,如果我留下一个空白字段,我会收到错误消息。有没有办法绕过这个问题?我搜索了这个 wbsite,发现了研讨会问题,但它们都是关于将空字段插入数据库的。
$input = $_GET['input'];
$categories = $_GET['category'];
$state = $_GET['state'];
$zipcode = $_GET['zipcode'];
$targetpage = "send.php";
$limit = 3;
//This query checks for data
$qq = " SELECT * FROM classified where confirm='0' ";
if (!empty($input)) {
$qq .= "AND title LIKE :input ";
}
if (!empty($categories) ){
$qq .= "AND id_cat = :categories ";
}
if (!empty($state) ) {
$qq .= "AND id_state = :state ";
}
if (!empty($zipcode) ) {
$qq .= "AND zipcode = :zipcode ";
}
$qq .= "ORDER BY date DESC ";
$qq = $db->prepare($qq);
$input = "%".$input."%";
// Bind the parameter
$qq->execute(array(':input'=> $input,
':categories'=> $categories,
':state'=> $state,
':zipcode'=> $zipcode ));
我得到的错误是
PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
in ....send.php on line 56
这是 ':zipcode'=> $zipcode ));