將多個複選框和文字方塊陣列插入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中文網其他相關文章!