我的html表单中有一个选择字段,其值为“Both,Purchase和Refund”。当选择我需要执行的两个选项时
select * from mytable where type in('Purchase','Refund')
在sql查询中。当我单独选择“购买”或“退款”时,我得到了正确的输出。但是当选择'Both'选择时,我没有得到任何结果。请帮忙......以下是代码:
if (isset($_POST['submit'])) {
$fdate=$_POST['fromdt'];
$tdate=$_POST['todt'];
$type=$_POST['txnType'];
if($type ='Both')
{
$type = 'Purchase'.','.'Refund';
}
$query = mysqli_query($GLOBALS["___mysqli_ston"],
"select *
from dlbcc_purchase
where purch_date between '$fdate' and '$tdate'
and txn_type in ('$type')
order by date(purch_date)desc")or die(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));
答案 0 :(得分:2)
您应该使用预准备语句来防止您现在遇到的SQL注入问题。
但是,您当前的问题是由引号引起的。构建查询时,您的条件将如下所示:
... txn_type in ('Purchase,Refund') ...
因此,您缺少逗号周围的引号来分隔值。
您可以使用以下方式解决此问题:
if($type ='Both')
{
$type = "Purchase','Refund";
^ ^ these quotes
}
现在结果将是:
... txn_type in ('Purchase','Refund') ...