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

Indsættelse af et multidimensionelt php-array i en mysql-database

Følgende kode fungerer, men den antager, at længden af ​​alle indlejrede arrays er den samme, med andre ord, at hvert indlejret array indeholder værdier for alle de attributter, der er defineret i det første indlejrede array.

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

Denne løsning vil fungere med et hvilket som helst antal attributter, der er defineret i det første indlejrede array, så længe alle andre indlejrede arrays har samme længde. For arrayet over vil outputtet være:

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

For en demonstration se http://codepad.org/7SG7lHaH , men bemærk, at jeg fjernede kaldet til mysql_real_escape_string() på codepad.org, fordi de ikke tillader funktionen. I din egen kode skal du bruge den.



  1. UTF-8 MySQL og Charset

  2. at vælge rækker, der er forekommet mere end tre gange

  3. cx oracle ImportError

  4. MySQL:Transaktioner vs låsetabeller