获取所有选中复选框的值并将其插入数据库 - PHP

时间:2013-05-16 10:10:11

标签: php mysql database

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

<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());
}

6 个答案:

答案 0 :(得分:3)

<?php
if(isset($_POST['lol'])){
  if (is_array($_POST['lol'])) {
    foreach($_POST['lol'] as $value){
      query here
    }
  } else {
      echo "nothing checked";
  }
}
?>

答案 1 :(得分: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());

?>
  

“使用INSERT   具有多个VALUES列表的语句,用于在a处插入多行   时间。这要快得多(在某些情况下要快很多倍)   而不是使用单独的单行INSERT语句。“reference

答案 2 :(得分: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;
?>

答案 3 :(得分: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'
);

答案 4 :(得分:0)

这是代码:

for ($j=0; $j < count($_POST['lol']);$j++) 
{
    $insert=mysql_query("INSERT INTO castvote (candidate) VALUES '".$_POST['lol'][$j]."')");
}

答案 5 :(得分: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());
  }
}
?>