2

我想获取选中复选框的所有值并将所有这些值插入数据库。

<form action="test.php" id="poll" name="poll" method="post">
    <input type="checkbox" class='lol' name="lol[]" value="cake">Cake :D
    <br>
    <input type="checkbox" class='lol' name="lol[]" value="pie">Pie
    <br>
    <input type="checkbox" class='lol' name="lol[]" value="cupcakes">Cupcakes ^O^
    <br>
    <input type="checkbox" class='lol' name="lol[]" value="brownies">Brownies :D
    <br>
    <input type="submit" value="Vote">
</form>

这是我的 php 代码。

$checkBox = $_POST['lol'];

for ($i=0; $i< sizeof($checkBox); $i++) {
    $query = "INSERT INTO castvote (candidate) VALUES ('".$checkBox[$i]."')";
    mysql_query($query) or die(mysql_error());
}
4

6 回答 6

3
<?php
if(isset($_POST['lol'])){
  if (is_array($_POST['lol'])) {
    foreach($_POST['lol'] as $value){
      query here
    }
  } else {
      echo "nothing checked";
  }
}
?>
于 2013-05-16T10:16:58.437 回答
2

你的 php 代码应该是这样的,

<?php

$data     = "";
$checkBox = $_POST['lol']; 

foreach($_POST['lol'] as $value) {
    $data .= "(\"".$value."\"),"; // concatenate your checked values
}

$data = substr($data,0,strlen($data)-1); // for removing the `,` symbol
$query = "INSERT INTO castvote (candidate) VALUES ". $data. ";";

mysql_query($query) or die(mysql_error());

?>

“使用带有多个 VALUES 列表的 INSERT 语句一次插入多行。这比使用单独的单行 INSERT 语句要快得多(在某些情况下快很多倍)。” 参考

于 2013-05-16T10:31:04.177 回答
1

SQL 查询如下所示:INSERT INTO castvote (candidate) VALUES ("value","value2");我的意思是您必须在值之间插入逗号 (,)。我也会在复选框中使用不同的名称。

编辑:

<?php
$array = array("foo", "bar", "hallo", "world"); //your array will be different
$text = "(";
for($i = 0;$i<count($array);$i++)
{
    if($i == count($array)-1)
    {
        $text .= '"'.$array[$i].'"';
    }
    else
    {
        $text .= '"'.$array[$i].'", ';
    }
}
$text .= ");";

$query = "INSERT INTO castvote (candidate) VALUES ".$text;
echo $query;
?>
于 2013-05-16T10:15:23.107 回答
1

使用 foreach 循环并尝试像这样创建一个查询

INSERT INTO tablename(
`id` ,
`provider_id` ,
`service_id` ,
`voucher_id`
)
// your loop goes here
VALUES (
NULL , '78', '90', '94'
), (
NULL , '67', '78', '89'
);
于 2013-05-16T10:15:36.993 回答
0

这是代码:

for ($j=0; $j < count($_POST['lol']);$j++) 
{
    $insert=mysql_query("INSERT INTO castvote (candidate) VALUES '".$_POST['lol'][$j]."')");
}
于 2013-05-16T10:32:26.297 回答
0

在您的提交类型输入字段中添加名称属性,然后编写您的 PHP 代码。喜欢 -

<input type="submit" name="save" value="Vote">

<?php
if (isset($_POST["save"])) {
  $checkBox = $_POST['lol'];
  foreach ($checkBox as $key => $value) {
    $query = "INSERT INTO castvote (candidate) VALUES ('".$value."')";
    mysql_query($query) or die(mysql_error());
  }
}
?>
于 2020-06-11T15:36:59.117 回答