问题描述
我对我认为应该非常简单的事情感到困惑,我想知道你们中的任何一个都可以帮忙的事情。
长话短说;在我的PHP搜索表单中,用户可以选择“ fromdate”和“ todate”。他们还可以输入两个字符串,通常是电话号码。
用户不必输入日期范围,他们只需使用发送者和接收者进行搜索即可。 如果是这种情况,我希望$ daterange_stmt为空白,并且AND运算符不出现在sql语句中。
类似地,如果用户仅提供日期范围,而不提供发送者/接收者,则我希望sql语句不包含AND运算符,也不包含$ operator_stmt。
如果这些代码中的一些是废话,请原谅-我已经在所有地方添加和更改了一些位,以使其正常工作... PHP不是我的强项。
像这样抓住各种武器...
$df = $_POST['df'];
$dt = $_POST['dt'];
$sender = $_POST['sender'];
$reciever = $_POST['reciever'];
我的sql select语句看起来像这样...
$sql = "SELECT * FROM comms_session_all s JOIN operators u ON s.agent = u.user_id WHERE " . $whereclause . " ORDER BY start_time ASC";
$ Whereclause被这样声明...
$daterange_stmt = "";
$operator_stmt= "";
if(!($df==" ")){
$daterange_stmt = "start_time between '" . $df. "' AND '" . $dt. "'";
}
if(!(empty($sender))){
$operator_stmt= "sender like '%" . $sender . "%' AND reciever like '%" . $reciever. "%'";
}
$whereclause = $daterange_stmt;
if(!(df==" ")){
if(!($operator_stmt=="")){
$whereclause = $daterange_stmt . " AND " . $operator_stmt;
}
} else {
if(!($operator_stmt=="")){
$whereclause = $operator_stmt;
}
}
因此,当前,如果提供了日期范围,并且提供了发送者/接收者,那么搜索就可以了,一切都很好。
如果仅输入一位,则由于流氓“与”而不必输入,因此失败。 执行时的sql语句如下所示:
SELECT * FROM comms_session_all的JOIN运算符u ON s.agent = u.user_id WHERE AND 发件人(如'%447958xxxx%')和收件人(如'%123456%')ORDER BY start_time ASC2
需要任何帮助!预先感谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)