Php 如何在选中复选框时返回所有查询?

Php 如何在选中复选框时返回所有查询?,php,mysqli,Php,Mysqli,当我选中复选框或多个复选框时,它只返回一行数据库数据,如何显示数据库中的所有数据 <?php foreach($portControllerClass->getAllAgencies() as $port_list){ ?> <input type="checkbox" name="port[]" value="<?=$port_list['agencies']?>"> <?=$port_list['agencies'] . '</b

当我选中复选框或多个复选框时,它只返回一行数据库数据,如何显示数据库中的所有数据

<?php foreach($portControllerClass->getAllAgencies() as $port_list){ ?>
    <input type="checkbox" name="port[]" value="<?=$port_list['agencies']?>"> <?=$port_list['agencies'] . '</br>'; 
} ?>

$date_from = date('Y-m-d', strtotime($_POST['date_from']));
$date_to = date('Y-m-d', strtotime($_POST['date_to']));

foreach($_POST['port'] as $port){ 

   $sql = "SELECT @a:=@a+1 no, letter_no, letter_date, conformity_date,
                  agencies, DATEDIFF(`conformity_date`,`letter_date`) AS DiffDate 
           FROM info_lab, (SELECT @a:= 0) AS a 
           WHERE agencies LIKE '%". implode(",",$_POST['port']) ."%' 
            and conformity_date BETWEEN '".$date_from."' 
            and '".$date_to."'";

   $query = $con->query($sql);
   $row = $query->fetch_array();
   echo $row['letter_no'];
}

不要在查询中使用$\u POST['port'],而是使用$port

因此,您的查询将变成:

$sql = "SELECT @a:=@a+1 no, letter_no, letter_date, conformity_date,
              agencies, DATEDIFF(`conformity_date`,`letter_date`) AS DiffDate 
       FROM info_lab, (SELECT @a:= 0) AS a 
       WHERE agencies LIKE '%".$port."%' 
        and conformity_date BETWEEN '".$date_from."' 
        and '".$date_to."'";
如果每个数据有多行,那么在$query=$con->query$sql之后添加这段代码

if ($query->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo $row['letter_no'];
    }
} else {
    echo "0 results";
}

不要在查询中使用$\u POST['port'],而是使用$port

因此,您的查询将变成:

$sql = "SELECT @a:=@a+1 no, letter_no, letter_date, conformity_date,
              agencies, DATEDIFF(`conformity_date`,`letter_date`) AS DiffDate 
       FROM info_lab, (SELECT @a:= 0) AS a 
       WHERE agencies LIKE '%".$port."%' 
        and conformity_date BETWEEN '".$date_from."' 
        and '".$date_to."'";
如果每个数据有多行,那么在$query=$con->query$sql之后添加这段代码

if ($query->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo $row['letter_no'];
    }
} else {
    echo "0 results";
}

您只有一个输入复选框,因此只能获得一个值。要获得多个值,我认为您应该使用foreach循环和数据库中的复选框值,如下所示:

foreach ($port_list['agencies'] as $value){
 <input type="checkbox" name="port[]" value="<?php echo $port_list['agencies']?>"> <php echo $port_list['agencies'] . '</br>'; ?>    
}

另外,请不要改用

您只有一个输入复选框,因此只能获得一个值。要获得多个值,我认为您应该使用foreach循环和数据库中的复选框值,如下所示:

foreach ($port_list['agencies'] as $value){
 <input type="checkbox" name="port[]" value="<?php echo $port_list['agencies']?>"> <php echo $port_list['agencies'] . '</br>'; ?>    
}


此外,请不要使用,而是添加打印\r$\u帖子;到您的脚本并向我们显示返回的内容编辑您的问题不作为评论发布带有复选框代码的html代码请发布html代码以及打印输出打印输出打印输出打印输出打印输出打印输出输出输出输出输出输出输出输出输出输出=阵列[port]=>Array[0]=>Jeddah Islamic port[date\u from]=>2016年1月4日[date\u to]=>2016年5月26日[submit]=>submit 542,但查询必须返回2行。注意,这段代码对于SQL注入和print\u r$\u POST来说非常糟糕;到您的脚本并向我们显示返回的内容编辑您的问题不作为评论发布带有复选框代码的html代码请发布html代码以及打印输出打印输出打印输出打印输出打印输出打印输出输出输出输出输出输出输出输出输出输出=阵列[port]=>Array[0]=>Jeddah Islamic port[date\u from]=>2016年1月4日[date\u to]=>2016年5月26日[submit]=>submit 542,但查询必须返回2行。请注意,此代码对于SQL注入非常糟糕此查询仅返回我的数据的1行SIR此查询应在每次执行foreach时返回一行。因此,如果您选中了两个复选框,则应该会显示两位字符串。如果上面的代码正确,它们可能会合并在一起,因为我看不到该行的任何样式。数组[0]=>吉达伊斯兰港[1]=>阿卜杜勒阿齐兹国王海港-达曼1529数组[0]=>吉达伊斯兰港[1]=>阿卜杜勒阿齐兹国王海港-达曼4475,我选择了2个复选框,它返回2。但是第一个数组必须返回2个查询。我不确定我是否理解您试图实现的目标?您能解释一下吗?吉达伊斯兰港在数据库中有2个数据,但只返回1个数据。此查询只返回我的1行数据。此查询应在每次执行foreach时返回一行数据。因此,如果您选中了两个复选框,则应该会显示两位字符串。如果上面的代码正确,它们可能会合并在一起,因为我看不到该行的任何样式。数组[0]=>吉达伊斯兰港[1]=>阿卜杜勒阿齐兹国王海港-达曼1529数组[0]=>吉达伊斯兰港[1]=>阿卜杜勒阿齐兹国王海港-达曼4475,我选择了2个复选框,它返回2。但是第一个数组必须返回2个查询。我不确定我是否理解您试图实现的目标?您能解释一下吗?吉达伊斯兰港数据库中有2个数据,但只返回1个数据。是的,每个查询只返回1行。但是我的查询数组[0]=>吉达伊斯兰港[1]=>阿卜杜勒阿齐兹国王海港-达曼1529数组[0]=>吉达伊斯兰港[1]=>阿卜杜勒阿齐兹国王海港-达曼4475,我选择了2个复选框,返回2。但是第一个数组必须返回2个查询。是的,每个查询只返回1行。但是我的查询数组[0]=>吉达伊斯兰港[1]=>阿卜杜勒阿齐兹国王海港-达曼1529数组[0]=>吉达伊斯兰港[1]=>阿卜杜勒阿齐兹国王海港-达曼4475,我选择了2个复选框,返回2。但是第一个数组必须返回2个查询。