首頁  >  文章  >  後端開發  >  如何將多個複選框和文字方塊數組插入 MySQL 資料庫:解決常見問題

如何將多個複選框和文字方塊數組插入 MySQL 資料庫:解決常見問題

Patricia Arquette
Patricia Arquette原創
2024-10-30 11:10:121008瀏覽

  How to Insert Multiple Checkbox and Textbox Arrays into a MySQL Database: Addressing Common Issues

將多個複選框和文字方塊陣列插入MySQL 資料庫:解決常見問題

涉及多個複選框和文字方塊數組的查詢可能會為PHP 帶來挑戰。本文解決了兩個特定問題:為什麼複選框顯示為已選取(即使未選取),以及為什麼資料無法插入資料庫。

複選框顯示問題

罪魁禍首是使用 implode,它會產生所有複選框值的逗號分隔字串。無論是否選取特定複選框,此方法都會錯誤地將整個清單插入每個資料庫行中。

要修正此問題,請為表單 HTML 中的核取方塊名稱指派明確索引。透過這樣做,$_POST['checkbox'] 數組中對應的複選框值可以輕鬆地與其隨附的$_POST['item'] 和$_POST['quantity'] 元素相關聯,而無需依賴內爆。

資料庫插入失敗

由於複選框僅提交選取項目的值,因此出現了另一個問題。這會導致 $_POST['checkbox'] 陣列的索引與對應的 $_POST['item'] 和 $_POST['quantity'] 元素之間不符。

要解決此問題,請使用指派給修改後的表單中的複選框名稱的索引。這允許正確的值配對,確保資料庫中的每一行都包含正確的資料集。

此外,不要使用 mysql_query,而是使用 $conn->query() 方法,該方法是與用於資料庫連接的 MySQLi API 一致。

更新了PHP 程式碼:

<br>$stmt = $conn->prepare("插入購買(產品、數量、價格)值( ?, ?, ?)");<br>$stmt->bind_param("sis", $name, $quantity, $price);<br>foreach ( $_POST['checkbox'] as $i => $ price) {<pre class="brush:php;toolbar:false">$name = $_POST['name'][$i];
$quantity = $_POST['quantity'][$i];
$stmt->execute();

}

額外安全措施

作為安全預防措施,通常建議從資料庫中檢索價格,而不是儲存在HTML 中。這可以防止使用者在提交表單之前在網路檢查器中修改價格。

以上是如何將多個複選框和文字方塊數組插入 MySQL 資料庫:解決常見問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn