在php mysql中使用if条件无法获取查询输出

在php mysql中使用if条件无法获取查询输出,php,mysql,Php,Mysql,我在html表单中有一个选择字段,其值为“购买和退款”。选择这两个选项时,我需要执行 select * from mytable where type in('Purchase','Refund') 在sql查询中。当我单独选择“购买”或“退款”时,我得到了正确的输出。但当选择“两者”选项时,我没有得到任何结果。请帮忙。。。代码如下: if (isset($_POST['submit'])) { $fdate=$_POST['fromdt']; $tdate=$_POST['todt']; $

我在html表单中有一个选择字段,其值为“购买和退款”。选择这两个选项时,我需要执行

select * from mytable where type in('Purchase','Refund')
在sql查询中。当我单独选择“购买”或“退款”时,我得到了正确的输出。但当选择“两者”选项时,我没有得到任何结果。请帮忙。。。代码如下:

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

您应该使用准备好的语句来防止现在出现的sql注入问题

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

... txn_type in ('Purchase,Refund') ...
因此,您缺少逗号周围用于分隔值的引号

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

if($type ='Both')
{
  $type = "Purchase','Refund";
                   ^ ^ these quotes
}
现在的结果将是:

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

字符串文本需要在SQL语句中引用。。。在in语句中,它们需要单独引用,因此,
in('Purchase,return')
正在txn\U类型中搜索
'Purchase,return'
的实际值
在('Purchase','return')
将搜索
购买
退款
@Barmar,非常感谢您的详细回复。帮了我很大的忙,我没有回复。我本来打算发一封类似杰罗恩的回复,但他抢先发了。@Barmar,你提供的信息等同于对我问题的重播。:)什么信息?我所做的就是修改你的问题格式。你是说@MarkBaker的评论吗?