在此场景中,主要目标是将多个复选框和文本框数组中的数据高效地插入 MySQL 数据库。首先,让我们解决所提供的代码中遇到的具体挑战。
第一个问题与复选框数据的显示有关。原始代码未能指示未选中的复选框,导致所有复选框选项都显示为选中状态。这是由于对复选框值的错误处理造成的。
第二个问题是数据没有正确插入到数据库中。尽管成功连接到数据库,但没有写入任何数据。这是由于数组索引的错误使用以及 MySQLi 和 mysql_query API 的不当使用造成的。
为了解决这些问题,我们建议进行以下代码修改:
<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>
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中文网其他相关文章!