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

chèn nhiều trường bằng vòng lặp foreach

Bạn đang thực hiện một bước trước trên $_POST chứ không phải trên mảng tên / tuổi. Bạn nên thực hiện foreach về mảng tên hoặc tuổi như sau:

if (
   !empty($_POST['name']) && !empty($_POST['age']) &&
   is_array($_POST['name']) && is_array($_POST['age']) &&
   count($_POST['name']) === count($_POST['age'])
) {
    $name_array = $_POST['name'];
    $age_array = $_POST['age'];
    for ($i = 0; $i < count($name_array); $i++) {

        $name = mysql_real_escape_string($name_array[$i]);
        $age = mysql_real_escape_string($age_array[$i]);

        mysql_query("INSERT INTO users (name, age) VALUES ('$name', '$age')");
    } 
}

Tôi cũng xin lưu ý rằng bạn hiện đang dễ bị chèn SQL nên tôi đã thêm bước thoát chuỗi của bạn cho tên / tuổi.

Tôi cũng rất khuyên bạn chỉ nên tạo một chèn hàng loạt duy nhất vào DB thay vì chèn từng bản ghi riêng lẻ (tôi sẽ để tùy bạn thực hiện). Cách tiếp cận này hầu như luôn luôn được ưu tiên từ quan điểm hiệu suất.

Cuối cùng, bạn THỰC SỰ không nên sử dụng mysql_* các chức năng vì chúng không được dùng nữa. Cân nhắc đổi sang mysqli hoặc PDO.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một mục câu đố trên mỗi trang (chương trình câu đố php / mysql)

  2. Cách định dạng chuỗi mệnh đề SQL IN với Python

  3. Hàm IF trong H2 để tương thích với MySQL

  4. Làm thế nào để di chuyển các cột trong một bảng MySQL?

  5. Thay thế để sử dụng từ khóa LIMIT trong SubQuery trong MYSQL