在此場景中,主要目標是將多個複選框和文字方塊數組中的資料有效率地插入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中文網其他相關文章!