如何将动态复选框值插入数据库?

时间:2012-12-28 17:04:54

标签: php mysql

我有一个包含2个以上复选框的表单,其中包含DynamicValues,具体取决于用户的选择。

<?php if (isset($_POST['submit'])) { 
if(sizeof($_POST['price']) == 2){ 
mysql_query("INSERT INTO price (value1, value2)
VALUES ('???????????????????????')");
 } 
 else{ 
 echo "NOT OK";  } 
 } 
?>
<form id="send" action="send.php" method="post">
    Price 1<input name="price[]" type="checkbox" value="DynamicValue"> 
    Price 2<input name="price[]" type="checkbox" value="DynamicValue2"> 
    Price 3<input name="price[]" type="checkbox" value="DynamicValue3">
    <input name="submit" type="submit" value="Send" />
</form>

VALUES应包含哪些内容才能为每个选中的复选框获取正确的值。 用户必须能够从列表中的任何位置检查2个复选框吗?

复选框可能碰巧超过3个,复选框的数量也取决于普通用户的选择。

复选框值将是数值。

希望我的问题很清楚,以便得到答案。

4 个答案:

答案 0 :(得分:1)

使用foreach循环来设置值escaping to prevent SQL Injection -

if(sizeof($_POST['price']) == 2){ 
$i=0;
foreach($_POST['price'] as $prices){
   $price[$i] = mysql_real_escape_string($prices);
   $i++;
}
mysql_query("INSERT INTO price (value1, value2) VALUES ({$price[0]},{$price[1]})");

自PHP 5.5.0起,mysql_*扩展名已弃用,将来会被删除。相反,应使用MySQLiPDO_MySQL扩展名。有关详细信息,另请参阅MySQL: choosing an API指南和related FAQ

答案 1 :(得分:0)

这是基本的PHP数组访问:

$query = "INSERT INTO price (value1, value2) VALUES (". $_POST['price'][0]) .", " . $_POST['price'][0]) . ")";
mysql_query($query);

请注意一些事情。您目前没有采取任何措施来保护您的数据库免受MySQL注入。对于攻击者来说,删除整个表格或删除数据库都会非常简单。

您也不应该使用mysql_*功能。这些已被弃用且不得使用。使用mysqli_*函数,PDO或其他更新且更安全的函数。

答案 2 :(得分:0)

你可以像那样插入它们

$price = $_POST['price'] ;

    mysql_query("INSERT INTO price (value1, value2,value3)
     VALUES ('".$price[0]."' ,'".$price[1]."' ,'".$price[2]."'  )") ;

答案 3 :(得分:0)

我不知道你的代码或算法是否有问题,但是如果是代码并且你是php的初学者可以帮助你:

<?php
    if (isset($_POST['submit'])) {

        if(!isset($_POST['price']))
            echo "No prices selected!";

        elseif(count($_POST['price'])==2) { //exactely 2 prices selected

            $product = $_POST['product'];
            foreach ($_POST['price'] as $value) {
                $sql =  "INSERT INTO price (product, value) VALUES (\"{$product}\", \"{$value}\")";
                mysql_query($sql);
            }

         } else
             echo "You need select 2 prices!";
     }
    ?>
    <form id="send" method="post">
        <input name="product" type="hidden" value="ID3">
        Price 1<input name="price[]" type="checkbox" value="DynamicValue"<?php if (isset($_POST['price']) && in_array('DynamicValue', $_POST['price'])) echo ' checked'; ?>>
        Price 2<input name="price[]" type="checkbox" value="DynamicValue2"<?php if (isset($_POST['price']) && in_array('DynamicValue2', $_POST['price'])) echo ' checked'; ?>>
        Price 3<input name="price[]" type="checkbox" value="DynamicValue3"<?php if (isset($_POST['price']) && in_array('DynamicValue3', $_POST['price'])) echo ' checked'; ?>>
        <input name="submit" type="submit" value="Send" />
    </form>