我在发出以下查询时遇到一个问题。我不确定我做错了什么?
$start= date("y-m-d", strtotime($start));
$end= date("y-m-d", strtotime($end));
// $start = '2016-03-03';
// $end= '2016-04-04';
if($jobtitle == ''){
$jobtitle = true;
}
if($start == '' or $end == ''){
$start = true;
$end = true;
}
$result = $mysqli->prepare("SELECT *
FROM postdata
where id = ?
and title = ?
and (date between ? and ?)
order by date desc");
$result ->bind_param("isss", $id, $title, $start, $end);
$result->execute();
实际上我有一个包含3个字段的表单。 1个标题和其他2个是日期的开始和结束。
如果用户在标题中输入值或在表单中输入开始日期和结束日期。用户还可以在两个字段中输入值。一旦用户提交了数据,我就想在数据库中执行搜索。
请告知我的查询无效的原因。
答案 0 :(得分:1)
您只需在IF语句中重新绑定这些变量
if($start = '' or $end = '')
必须有像===或==
这样的布尔运算符答案 1 :(得分:1)
我在if条件下创建了三个单独的选择查询,它解决了问题。 这是我目前正在使用的代码。
if($title != '' and $_POST['start'] == '' and $_POST['end'] == ''){
$result = $mysqli->prepare("SELECT * FROM posting where id = ? and title like ? order by date desc");
$result ->bind_param("is", $id, $title);
}
if($title == '' and $_POST['start'] != '' and $_POST['end'] != ''){
$result = $mysqli->prepare("SELECT * FROM posting where id = ? and (date between ? and ?) order by date desc");
$result ->bind_param("iss", $id, $start, $end);
}
if($title != '' and $_POST['start'] != '' and $_POST['end'] != ''){
$result = $mysqli->prepare("SELECT * FROM posting where id = ? and title like ? and (date between ? and ?) order by date desc");
$result ->bind_param("isss", $id, $title, $start, $end);
}