-1

我有一个包含超过 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

4 回答 4

1

使用foreach循环设置值,转义以防止 SQL 注入-

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]})");

mysql_*扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应该使用MySQLiPDO_MySQL扩展。另请参阅MySQL:选择 API指南和相关的常见问题解答以获取更多信息。

于 2012-12-28T17:27:26.533 回答
0

你可以这样插入它们

$price = $_POST['price'] ;

    mysql_query("INSERT INTO price (value1, value2,value3)
     VALUES ('".$price[0]."' ,'".$price[1]."' ,'".$price[2]."'  )") ;
于 2012-12-28T17:26:25.033 回答
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>
于 2012-12-28T17:29:53.803 回答
0

这是基本的 PHP 数组访问:

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

请注意一些事情。您目前没有采取任何措施来保护您的数据库免受 MySQL 注入。攻击者可以非常简单地执行诸如删除整个表或完全删除数据库之类的操作。

您也不应该使用这些mysql_*功能。这些已弃用,不应使用。使用mysqli_*功能、PDO 或其他更当前和更安全的东西。

于 2012-12-28T17:24:28.517 回答