首页 > 数据库 > mysql教程 > 如何有效地将数据从多个复选框和文本框数组插入 MySQL 数据库,同时处理未选中的复选框并防止数据操作?

如何有效地将数据从多个复选框和文本框数组插入 MySQL 数据库,同时处理未选中的复选框并防止数据操作?

Patricia Arquette
发布: 2024-12-09 20:16:14
原创
192 人浏览过

How can I efficiently insert data from multiple checkbox and textbox arrays into a MySQL database while handling unchecked checkboxes and preventing data manipulation?

将多个复选框和文本框数组插入 MySQL 数据库

在此场景中,主要目标是将多个复选框和文本框数组中的数据高效地插入 MySQL 数据库。首先,让我们解决所提供的代码中遇到的具体挑战。

对复选框数据的误解

第一个问题与复选框数据的显示有关。原始代码未能指示未选中的复选框,导致所有复选框选项都显示为选中状态。这是由于对复选框值的错误处理造成的。

数据插入不完整

第二个问题是数据没有正确插入到数据库中。尽管成功连接到数据库,但没有写入任何数据。这是由于数组索引的错误使用以及 MySQLi 和 mysql_query API 的不当使用造成的。

代码修改

为了解决这些问题,我们建议进行以下代码修改:

  • 修改 HTML 表单以显式索引复选框名称以匹配相应的项目和数量值。
  • 内PHP 脚本,使用 MySQLi 准备好的语句来安全高效地插入数据。
  • 从 HTML 中删除手动价格值,并在处理过程中从数据库中获取它们,以防止潜在的数据操纵。
  • 确保一致在整个代码中使用 MySQLi API。

已更新HTML:

<form method="POST">

<input type="hidden" name="item[]" value="cupcake">
<input type="text" name="items" value="cupcake" readonly><br>
<b>Price :</b> <span name="price" value="3.00">.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /><span>Add to Cart</span></label></div></div></td><br>

<input type="hidden" name="item[]" value="cake">
<input type="text" name="items" value="cake" readonly><br>
<b>Price :</b> <span name="price" value="20.00">.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /><span>Add to Cart</span></label></div></div></td><br>

<input type="submit" name = "insertBT"><br>
</form>
登录后复制

修订的 PHP 脚本:

if(isset($_POST['insertBT'])) {
    $conn = new mysqli ($servername, $username, $password, $db);
    if($conn->connect_error) {
        die ("Connection Failed : " . $conn->connect_error);
    } else {
        $stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)");
        $stmt->bind_param("sis", $name, $quantity, $price);
        foreach ($_POST['checkbox'] as $i => $price) {
            $name = $_POST['name'][$i];
            $quantity = $_POST['quantity'][$i];
            $stmt->execute();
        }
    }
}
登录后复制

通过实施这些更改,脚本现在应该正确处理复选框数据、执行安全数据插入、从数据库获取动态价格值,并提供准确的结果。请记住,在执行数据库操作之前始终验证用户输入是否已正确清理,以防止潜在的安全漏洞。

以上是如何有效地将数据从多个复选框和文本框数组插入 MySQL 数据库,同时处理未选中的复选框并防止数据操作?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板