mysql选择空值的查询

时间:2016-04-11 19:44:37

标签: php mysql

我在发出以下查询时遇到一个问题。我不确定我做错了什么?

$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个是日期的开始和结束。

如果用户在标题中输入值或在表单中输入开始日期和结束日期。用户还可以在两个字段中输入值。一旦用户提交了数据,我就想在数据库中执行搜索。

请告知我的查询无效的原因。

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);
            }