php - 如何将checkbox的循环值插入到单个mysql_query中

时间:2016-07-14 16:32:23

标签: php

我这里有一个循环的复选框值,假设我有3个增量

<?php foreach ($times as $time) { ?>
<input type="checkbox" name="b" id="b1" value=" <?php echo $time->format('h:i a'), '-', $time->add($interval)->format('h:i a'); ?>">
<?php } ?>

foreach显示3个具有不同值的复选框。 现在例如我检查了2个盒子。查询必须运行两次?或者更好的是,必须将2个已检查的值插入到数据库中。

$b = $_POST['b'];
$ins = mysql_query("INSERT INTO ehr_schedule3(`sched3_time) VALUES('$b')");

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您的所有复选框都具有相同的名称,因此$_POST['b']只会获取最后一个复选框的值。要获取多个值,您需要使用数组样式名称:

<?php foreach ($times as $time) { ?>
<input type="checkbox" name="b[]" value="<?php echo $time->format('h:i a'), '-', $time->add($interval)->format('h:i a'); ?>">
<?php } ?>

然后$_POST['b']将是所有值的数组。

foreach ($_POST['b'] as $b) {
    $b = mysql_real_escape_string($b);
    $ins = mysql_query("INSERT INTO ehr_schedule3(`sched3_time) VALUES('$b')");
}

我还拿出了id="b1",因为你不应该有多个具有相同ID的元素。如果你真的需要输入ID(为什么?),你需要给它们不同的,可能是使用数组索引作为ID的一部分。

答案 1 :(得分:0)

您可以设置一个计数器来计算bs:

<?php
$count = 0;//to count the rows if they are dynamic
foreach ($times as $time) {
?>
<input type="checkbox" name="b<?php echo $count; ?>" value="<?php echo $time->format('h:i a'), '-', $time->add($interval)->format('h:i a'); ?>">
<?php 
$count++;
} 
?>
<input name="rowCount" type="hidden" value="<?php echo $count; ?>" /><!-- to store number of inputs -->

然后在你的插入函数

$b_count = $_POST['rowCount'];//to store count of b
$my_quries = [];
for($i=0; $i<$b_count; $++){
    $b = $_POST['b'.$i];//get the corresponded b from POST req
    $my_quries[] = mysql_query("INSERT INTO ehr_schedule3(`sched3_time) VALUES('$b')");
    //you can execute the query in this loop or another one as you like
}