sql >> Database >  >> RDS >> Mysql

Een multidimensionale php-array invoegen in een mysql-database

De volgende code werkt, maar gaat ervan uit dat de lengte van alle geneste arrays hetzelfde is, met andere woorden dat elke geneste array waarden bevat voor alle attributen die in de eerste geneste array zijn gedefinieerd.

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

Deze oplossing werkt met een willekeurig aantal attributen dat is gedefinieerd in de eerste geneste array, zolang alle andere geneste arrays dezelfde lengte hebben. Voor de array erboven is de uitvoer:

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

Voor een demonstratie zie http://codepad.org/7SG7lHaH , maar merk op dat ik de aanroep van mysql_real_escape_string() op codepad.org heb verwijderd, omdat ze de functie niet toestaan. In uw eigen code moet u deze gebruiken.



  1. Docker-compose :mysqld:kan bestand '/var/lib/mysql/is_writable' niet maken/schrijven naar bestand '/var/lib/mysql/is_writable' (Errcode:13 - Toestemming geweigerd)

  2. DATE_SUB() Voorbeelden – MySQL

  3. MySQL VARCHAR(255) UTF8 is te lang voor de sleutel, maar de maximale lengte is 1000 bytes

  4. Problemen met de configuratie van transactielogboeken