首頁 > 資料庫 > mysql教程 > 如何有效地將資料從多個複選框和文字方塊數組插入 MySQL 資料庫,同時處理未選取的複選框並防止資料操作?

如何有效地將資料從多個複選框和文字方塊數組插入 MySQL 資料庫,同時處理未選取的複選框並防止資料操作?

Patricia Arquette
發布: 2024-12-09 20:16:14
原創
193 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板