Mysql
 sql >> Database >  >> RDS >> Mysql

Inserimento di un array php multidimensionale in un database mysql

Il codice seguente funzionerà, ma presuppone che la lunghezza di tutti gli array nidificati sia la stessa, in altre parole che ogni array nidificato contenga valori per tutti gli attributi definiti nel primo array nidificato.

$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) . ")";

Questa soluzione funzionerà con qualsiasi numero di attributi definiti nel primo array nidificato, purché tutti gli altri array nidificati abbiano la stessa lunghezza. Per l'array sopra l'output sarà:

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

Per una dimostrazione, vedere http://codepad.org/7SG7lHaH , ma nota che ho rimosso la chiamata a mysql_real_escape_string() su codepad.org, perché non consentono la funzione. Nel tuo codice dovresti usarlo.