Mysql
 sql >> Baza danych >  >> RDS >> Mysql

wstawiaj wiele pól za pomocą pętli foreach

Robisz foreach na $_POST zamiast na tablicach nazwisko/wiek. Powinieneś wykonać foreach na tablicy nazw lub wieku w ten sposób:

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')");
    } 
}

Chciałbym również zauważyć, że jesteś obecnie podatny na wstrzyknięcie SQL, więc dodałem krok ucieczki ciągów dla nazwy / wieku.

Sugerowałbym również, aby po prostu zrobić pojedynczą wstawkę zbiorczą do bazy danych zamiast wstawiania każdego rekordu osobno (wdrożenie tego pozostawiam tobie). Takie podejście jest prawie zawsze preferowane z punktu widzenia wydajności.

Wreszcie, NAPRAWDĘ nie powinieneś używać mysql_* działają, ponieważ są przestarzałe. Rozważ zmianę na mysqli lub 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. Jak zmienić hasło roota MySQL na domyślne?

  2. Wykrywanie uszkodzonych znaków utf8 w MySQL

  3. Mysql dołącz do stołów

  4. EXPLAIN i COUNT zwracają dwie różne wartości

  5. Laravel:uporządkuj według gdzie in