sql >> Databáze >  >> RDS >> Mysql

Vložení vícerozměrného pole php do databáze mysql

Následující kód bude fungovat, ale předpokládá, že délka všech vnořených polí je stejná, jinými slovy, že každé vnořené pole obsahuje hodnoty pro všechny atributy definované v prvním vnořeném poli.

$array = array(
    array('name', 'age', 'gender' ),
    array('Ian', 24, 'male'),
    array('Janice', 21, 'female')
);

$fields = implode(', ', array_shift($array));

$values = array();
foreach ($array as $rowValues) {
    foreach ($rowValues as $key => $rowValue) {
         $rowValues[$key] = mysql_real_escape_string($rowValues[$key]);
    }

    $values[] = "(" . implode(', ', $rowValues) . ")";
}

$query = "INSERT INTO table_name ($fields) VALUES (" . implode (', ', $values) . ")";

Toto řešení bude fungovat s libovolným počtem atributů definovaných v prvním vnořeném poli, pokud všechna ostatní vnořená pole budou mít stejnou délku. Pro pole nad výstupem bude:

INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)

Pro ukázku viz http://codepad.org/7SG7lHaH , ale všimněte si, že jsem odstranil volání mysql_real_escape_string() na codepad.org, protože tuto funkci neumožňují. Ve svém vlastním kódu byste jej měli použít.



  1. Sekvence provádění klauzule Seskupit podle, Mít a Kde v SQL Server?

  2. Jak se připojit k instanci SQL Server pomocí ověřování Windows nebo ověřování SQL Server - SQL Server / Výukový program T-SQL, část 3

  3. Zaznamenejte všechny dotazy v mysql

  4. SQL UPDATE všechny hodnoty v poli s připojeným řetězcem CONCAT nefunguje