Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh memasukkan data dengan cekap daripada berbilang kotak semak dan tatasusunan kotak teks ke dalam pangkalan data MySQL sambil mengendalikan kotak semak yang tidak ditanda dan menghalang manipulasi data?

Bagaimanakah saya boleh memasukkan data dengan cekap daripada berbilang kotak semak dan tatasusunan kotak teks ke dalam pangkalan data MySQL sambil mengendalikan kotak semak yang tidak ditanda dan menghalang manipulasi data?

Patricia Arquette
Patricia Arquetteasal
2024-12-09 20:16:14206semak imbas

How can I efficiently insert data from multiple checkbox and textbox arrays into a MySQL database while handling unchecked checkboxes and preventing data manipulation?

Memasukkan Berbilang Kotak Semak dan Tatasusunan Kotak Teks ke dalam Pangkalan Data MySQL

Dalam senario ini, matlamat utama adalah untuk memasukkan data daripada berbilang kotak semak dan tatasusunan kotak teks ke dalam pangkalan data MySQL dengan cekap. Untuk bermula, mari kita atasi cabaran khusus yang dihadapi dalam kod yang dibentangkan.

Salah Tafsiran Data Kotak Pilihan

Isu pertama berkaitan dengan paparan data kotak pilihan. Kod asal gagal menunjukkan kotak pilihan yang tidak ditandakan, menyebabkan semua pilihan kotak pilihan muncul seperti yang dipilih. Ini disebabkan oleh pengendalian nilai kotak pilihan yang salah.

Sisipan Data Tidak Lengkap

Isu kedua ialah data tidak dimasukkan dengan betul ke dalam pangkalan data. Walaupun sambungan berjaya ke pangkalan data, tiada data sedang ditulis. Ini disebabkan oleh penggunaan pengindeksan tatasusunan yang salah dan penggunaan MySQLi dan mysql_query API yang tidak betul.

Pengubahsuaian Kod

Untuk menyelesaikan isu ini, kami mencadangkan pengubahsuaian kod berikut:

  • Ubah suai borang HTML untuk mengindeks nama kotak semak secara eksplisit agar sepadan nilai item dan kuantiti.
  • Dalam skrip PHP, gunakan pernyataan MySQLi yang disediakan untuk sisipan data yang selamat dan cekap.
  • Alih keluar nilai harga manual daripada HTML dan ambilnya daripada pangkalan data semasa pemprosesan untuk mengelakkan manipulasi data yang berpotensi.
  • Pastikan penggunaan API MySQLi yang konsisten di seluruh kod.

HTML yang dikemas kini:

<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>

Skrip PHP yang disemak:

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();
        }
    }
}

Dengan melaksanakan perubahan ini, skrip kini seharusnya mengendalikan data kotak semak dengan betul, lakukan pemasukan data selamat, ambil nilai harga dinamik daripada pangkalan data dan berikan hasil yang tepat. Ingat, sentiasa sahkan bahawa input pengguna dibersihkan dengan betul sebelum melaksanakan operasi pangkalan data untuk mengelakkan potensi kelemahan keselamatan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memasukkan data dengan cekap daripada berbilang kotak semak dan tatasusunan kotak teks ke dalam pangkalan data MySQL sambil mengendalikan kotak semak yang tidak ditanda dan menghalang manipulasi data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn