sql >> Databasteknik >  >> RDS >> Mysql

Infoga en flerdimensionell php-array i en mysql-databas

Följande kod kommer att fungera, men den förutsätter att längden på alla kapslade matriser är densamma, med andra ord att varje kapslad matris innehåller värden för alla attribut som definieras i den första kapslade matrisen.

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

Den här lösningen fungerar med valfritt antal attribut som definieras i den första kapslade matrisen, så länge som alla andra kapslade matriser har samma längd. För arrayen ovanför blir utdata:

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

För en demonstration se http://codepad.org/7SG7lHaH , men observera att jag tog bort anropet till mysql_real_escape_string() på codepad.org, eftersom de inte tillåter funktionen. I din egen kod bör du använda den.



  1. Felsökning av MySQL-replikering:del två

  2. Att använda utf8 eller inte - MySQL- och PHP-teckenkodningsproblem

  3. PostgreSQL-agent i SQL Standard Committee igen

  4. Villkorligt SQL-antal