我制作了一个 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
最佳答案
在你的数组中有 fromdate
和 todate
索引。这就是执行 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/