Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Inserindo um array php multidimensional em um banco de dados mysql


O código a seguir funcionará, mas assume que o comprimento de todas as matrizes aninhadas é o mesmo, em outras palavras, que cada matriz aninhada contém valores para todos os atributos definidos na primeira matriz aninhada.
$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) . ")";

Esta solução funcionará com qualquer número de atributos definidos na primeira matriz aninhada, desde que todas as outras matrizes aninhadas tenham o mesmo comprimento. Para a matriz acima, a saída será:
INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)

Para uma demonstração, consulte http://codepad.org/7SG7lHaH , mas note que eu removi a chamada para mysql_real_escape_string() no codepad.org, porque eles não permitem a função. Em seu próprio código, você deve usá-lo.