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

MySQL Bulk Insert via PHP

Hvis du bruger en forberedt sætning, kan du gå over dine $JSON_data array med en foreach-løkke og kør INSERT med den del af dataene.

Brug af forberedte sætninger vil reducere omkostningerne ved at bygge forespørgslen, blot at sende de nye data til databasen ved hver iteration af løkken.

$query = mysqli_prepare("INSERT INTO `MyTable` (`col1`,`col2`,`col3`)
    VALUES(?,?,?)");

foreach($JSON_data as $key => $value) {
    $query->bind_param('sss',$value["prop1"],$value["prop2"],$value["prop3"];
    $query->execute();
}

Bemærk, at det første argument til bind_param() fortæller det, hvor mange værdier du vil binde, samt typen for hver værdi.
s svarer til strengdata, i svarer til heltalsdata, d svarer til dobbelt (flydende komma) og b svarer til binære data.

Et andet advarselsord, gør IKKE citer alle strengdata som s datatype fortæller mysql at forvente en streng. Hvis du citerer ? i den forberedte erklæring vil den fortælle dig, at antallet af parametre er forkert. Hvis du citerer strengene, vil de blive citeret i mysql.

EDIT:

Hvis du vil bruge det samme paradigme (indsættelse af flere rækker med en forespørgsel), er der måder at gøre det på. En måde er at oprette en klasse, der samler bind_param kalder og lav en bind_param, når du udfører forespørgslen. Koden til det er her .



  1. Indlæser CSV i MySQL-tabel med PHP

  2. Ulovlig blanding af sammenstillinger MySQL-fejl

  3. SQL Server CASE-udtryk

  4. JpaSpecificationExecutor JOIN + BESTIL AF i specifikation