php - 如何一次运行一个查询?

标签 php mysql

我制作了一个 PHP 页面,我想如果数据发布然后查询为此运行我使用 isset 函数但对我不起作用它总是运行三个查询但我想一次运行一个查询我该怎么做?这是我的代码:

if(isset($_POST['fromdate'])){
                $fromdate=date('Y-m-d h:i:s',strtotime($_POST['fromdate']));
        echo $select="select b.email AS Email from buyers b,registrations r where b.buyer_id=r.buyer_id and r.event_id='".$_POST['events'][$i]."' and b.created_on>='".$fromdate."' group by r.buyer_id";
 $res = $GLOBALS ['mysqli']->query ($select) or die ($GLOBALS ['mysqli']->error . __LINE__);
$record=mysqli_num_rows($res);
    $recepients = $recepients + $record;                    
}
if(isset($_POST['todate'])){
$todate=date('Y-m-d h:i:s',strtotime($_POST['todate']));
echo $select1="select b.email AS Email from buyers b,registrations r where b.buyer_id=r.buyer_id and r.event_id='".$_POST['events'][$i]."' and b.created_on>='".$todate."' group by r.buyer_id";
$res1 = $GLOBALS ['mysqli']->query ($select1) or die ($GLOBALS ['mysqli']->error . __LINE__);
                $record1=mysqli_num_rows($res1);
                $recepients = $recepients + $record1;
            }
            if(isset($_POST['fromdate']) && isset($_POST['todate'])){ 
            $fromdate=date('Y-m-d h:i:s',strtotime($_POST['fromdate']));
            $todate=date('Y-m-d h:i:s',strtotime($_POST['todate'])); 
                echo $select2="select b.email AS Email from buyers b,registrations r where b.buyer_id=r.buyer_id and r.event_id='".$_POST['events'][$i]."' and b.created_on BETWEEN '".$fromdate."' AND  '".$todate."' group by r.buyer_id";
$res2 = $GLOBALS ['mysqli']->query ($select2) or die ($GLOBALS ['mysqli']->error . __LINE__);
                $record2=mysqli_num_rows($res2);
                $recepients = $recepients + $record2;
            }

这是我的数组:

Array ( [events] => Array ( [0] => 7 ) [fromdate] => [todate] => February 11, 2014 2:55 PM [description] => [subject] => [fromname] => [replyto] => [senddatetime] => [timezone] => America/Los_Angeles [message] => [submit_skip] => Continue )

当我显示查询然后给出不好的结果这里是我的查询

 select b.email AS Email from buyers b,registrations r where b.buyer_id=r.buyer_id and r.event_id='7' and b.created_on>='1970-01-01 12:00:00' group by r.buyer_id
 select b.email AS Email from buyers b,registrations r where b.buyer_id=r.buyer_id and r.event_id='7' and b.created_on>='2014-02-11 02:55:00' group by r.buyer_id
 select b.email AS Email from buyers b,registrations r where b.buyer_id=r.buyer_id and r.event_id='7' and b.created_on BETWEEN '1970-01-01 12:00:00' AND '2014-02-11 02:55:00' group by r.buyer_id 

最佳答案

在你的数组中有 fromdatetodate 索引。这就是执行 3 个代码块的原因。您只检查索引,还需要检查值。即,不为空。也可以使用 if..else。在这里您可以使用以下内容,

//if both fromdate and todate are not null
if(isset($_POST['fromdate']) and $_POST['fromdate']!='' and isset($_POST['todate']) and $_POST['todate']!=''){
   //code
}
//if fromdate is not null
else if(isset($_POST['fromdate']) and $_POST['fromdate']!=''){
    //code
}
//if todate is not null
else if(isset($_POST['todate']) and $_POST['todate']!=''){
    //code
}

关于php - 如何一次运行一个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21698716/

相关文章:

php - 使用 mPDF 将 PDF 转换为 B64

javascript - 使用表单参数 onSubmit 运行 PHP 脚本(发送电子邮件)

php - 编辑数据库中选定的值

mysql - 使用 docker-compose 时未在 MySQL 中创建用户

c# mysql - 当描述相同时添加库存值和新条目

mysql - impala find_in_set 与性能对比

php - 如何将数组值插入数据库表的列?

javascript - 在xml中调用php变量

mysql - 如何在 Node js 中执行此异步功能

MySql按天按时间分组查询