在php mysql中使用if条件时没有得到查询输出

时间:2014-11-08 16:49:03

标签: php mysql

我的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)));

1 个答案:

答案 0 :(得分:2)

您应该使用预准备语句来防止您现在遇到的SQL注入问题。

但是,您当前的问题是由引号引起的。构建查询时,您的条件将如下所示:

... txn_type in ('Purchase,Refund') ...

因此,您缺少逗号周围的引号来分隔值。

您可以使用以下方式解决此问题:

if($type ='Both')
{
  $type = "Purchase','Refund";
                   ^ ^ these quotes
}

现在结果将是:

... txn_type in ('Purchase','Refund') ...