Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在if-else语句中从不同查询中选择一个数据_Php_Mysql - Fatal编程技术网

Php 在if-else语句中从不同查询中选择一个数据

Php 在if-else语句中从不同查询中选择一个数据,php,mysql,Php,Mysql,从test.php,我有一个无线电输入。 不同的值有不同的查询。 当用户选择单选按钮时,我需要运行查询。 因此,选择具有所选期间的数据,即上月。 我卡住了!如何从所有正在运行的查询中调出数据 <tr> <td><label for="period"><b>Transaction Period:</b> </label></td> <td><input type="radio" name="pe

从test.php,我有一个无线电输入。 不同的值有不同的查询。 当用户选择单选按钮时,我需要运行查询。 因此,选择具有所选期间的数据,即上月。 我卡住了!如何从所有正在运行的查询中调出数据

<tr> 
<td><label for="period"><b>Transaction Period:</b> </label></td>
<td><input type="radio" name="period" value="current">Current Month<br>
<input type="radio" name="period" value="current_first">Last 1 Month and Current Month<br>
<input type="radio" name="period" value="current_second">Last 2 Months and Current Month</td>          
</tr>

$period = $_POST['period'];

if ($period == 'current'){
$query1 = "SELECT * FROM transaction WHERE account_id ='$acc_id' AND user_id= '$user_id' AND MONTH(CURDATE())= MONTH(datetime)";
$result1 = mysqli_query($link, $query1) or die(mysqli_error($link));

elseif ($period = 'current_first'){
$query2 = "SELECT * FROM transaction WHERE account_id ='$acc_id' AND user_id= '$user_id' AND datetime BETWEEN CURRENT_DATE - INTERVAL 1 MONTH AND CURRENT_DATE";
$result2 = mysqli_query($link, $query2) or die(mysqli_error($link));
}

else if ($period ='current_second'){
$query3 = "SELECT * FROM transaction WHERE account_id ='$acc_id' AND user_id= '$user_id' AND datetime BETWEEN CURRENT_DATE - INTERVAL 2 MONTH AND CURRENT_DATE";
$result3 = mysqli_query($link, $query3) or die(mysqli_error($link)); 
}

else {
}

while ($row1 = mysqli_fetch_array($result1/$result2/$result3)) {
                $date = $row1['datetime'];                
                $trans_code = $row1['transaction_code'];
                $reference = $row1['reference'];
                $debit = $row1['debit'];
                $credit = $row1['credit'];


echo $date;
echo $trans_code;
echo $reference;
echo $debit;
echo $credit;

我不确定我是否正确理解了你的问题;您希望在用户选择单选按钮时提交表单吗?如果是这样,您应该用表单包围输入类型,并添加:onClick=this.form.submit;输入类型。因此:

<form method="post" action="">
<tr> 
<td><label for="period"><b>Transaction Period:</b> </label></td>
<td><input type="radio" name="period" value="current" onclick="this.form.submit();">Current Month<br>
<input type="radio" name="period" value="current_first" onclick="this.form.submit();">Last 1 Month and Current Month<br>
<input type="radio" name="period" value="current_second" onclick="this.form.submit();">Last 2 Months and Current Month</td>          
</tr>
</form>
哦,顺便说一句,在执行if和查询代码之前,您还应该检查是否设置了$_POST['period'.

在第一个if语句之后缺少一个右括号

还有,你为什么不改变你的假设。。。其他的而与此同时。。声明如下,然后重试

if ($period == 'current') {
    $query = "SELECT * FROM transaction WHERE account_id ='$acc_id' AND user_id= '$user_id' AND MONTH(CURDATE())= MONTH(datetime)";
} elseif ($period = 'current_first') {
    $query = "SELECT * FROM transaction WHERE account_id ='$acc_id' AND user_id= '$user_id' AND datetime BETWEEN CURRENT_DATE - INTERVAL 1 MONTH AND CURRENT_DATE";
} else if ($period ='current_second') {
    $query = "SELECT * FROM transaction WHERE account_id ='$acc_id' AND user_id= '$user_id' AND datetime BETWEEN CURRENT_DATE - INTERVAL 2 MONTH AND CURRENT_DATE";
} else {
    // what should i do?
}

$result = mysqli_query( $link, $query ) or die( mysqli_error( $link ) );
while ( $row = mysqli_fetch_array( $result ) ) {
 // do something
 $date = $row[ 'datetime' ];
 ...

 echo $date;
 ...
} // while

我会将radio的值设置为0、1或2,并将该值直接绑定到一个准备好的语句中。只需要一个查询,您可能需要检查它是否正确地与0一起工作,否则您必须稍微修改sql…如果它对您有效,那么,还需要查看: