Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHP chèn nhiều hộp kiểm VÀ mảng hộp văn bản vào Cơ sở dữ liệu MySQL

Bạn không nên sử dụng implode . Điều đó đặt một danh sách được phân tách bằng dấu phẩy gồm mọi thứ trong biểu mẫu vào mỗi hàng mà bạn chèn và lặp lại điều này cho mọi hộp được chọn. Bạn chỉ nên chèn một mục trong mỗi hàng, bằng cách lập chỉ mục các mảng.

Tuy nhiên, khi bạn có một hộp kiểm trong một biểu mẫu, nó chỉ gửi những cái được chọn. Kết quả của việc này là các chỉ mục của $_POST['checkbox'] mảng sẽ không khớp với $_POST['item'] tương ứng và $_POST['quantity'] các yếu tố. Bạn cần đặt các chỉ mục rõ ràng vào hộp kiểm checkbox tên để bạn có thể liên hệ chúng.

<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">$17.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">$20.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>

Sau đó, mã PHP của bạn có thể giống như sau:

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

BTW, đặt giá trong HTML của bạn có vẻ là một ý tưởng tồi. Không có gì ngăn cản người dùng sửa đổi HTML bằng cách sử dụng trình kiểm tra web trước khi họ gửi biểu mẫu, vì vậy họ có thể giảm giá. Bạn sẽ nhận được giá từ cơ sở dữ liệu khi xử lý biểu mẫu.

Ngoài ra, hãy lưu ý rằng trong mã gốc của bạn, bạn đã mở kết nối cơ sở dữ liệu bằng MySQLi, nhưng sau đó bạn cố thực hiện chèn bằng mysql_query thay vì $conn->query() . Bạn không thể kết hợp các API như vậy; myql_query chỉ có thể được sử dụng khi bạn mở kết nối với mysql_connect .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. # 1139 - Gặp lỗi 'toán hạng lặp lại-toán tử không hợp lệ' từ regexp

  2. Cách xóa thủ tục đã lưu trữ trong MySQL

  3. Nhập dữ liệu CSV bằng PHP / MySQL

  4. Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/var/lib/mysql/mysql.sock' (2)

  5. Xây dựng lại MySQL 8.0 Replication Slave bằng cách sử dụng một plugin nhân bản