sql >> Database >  >> RDS >> Mysql

Hoe voeg ik meerdere rijen uit een array in met behulp van het CodeIgniter-framework?

Een INSERT samenstellen statement met meerdere rijen is veel sneller in MySQL dan één INSERT verklaring per rij.

Dat gezegd hebbende, klinkt het alsof je in PHP problemen met het afhandelen van strings tegenkomt, wat echt een algoritmeprobleem is, geen taalprobleem. Kortom, als u met grote tekenreeksen werkt, wilt u onnodig kopiëren tot een minimum beperken. Dit betekent in de eerste plaats dat u aaneenschakeling wilt voorkomen. De snelste en meest geheugenefficiënte manier om een ​​grote string te bouwen, zoals het invoegen van honderden rijen tegelijk, is door gebruik te maken van de implode() functie- en arraytoewijzing.

$sql = array(); 
foreach( $data as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));

Het voordeel van deze benadering is dat u de SQL-instructie die u tot nu toe hebt samengesteld niet met elke aaneenschakeling kopieert en opnieuw kopieert; in plaats daarvan doet PHP dit eenmaal in de implode() uitspraak. Dit is een grote winnen.

Als je veel kolommen moet samenstellen, en een of meer ervan zijn erg lang, dan kun je ook een innerlijke lus bouwen om hetzelfde te doen en implode() gebruiken om de waardenclausule toe te wijzen aan de buitenste array.



  1. MySQL-equivalent van Oracle's SEQUENCE.NEXTVAL

  2. Heerlijk eten (en gegevens) serveren - een gegevensmodel voor restaurants

  3. Databasesortering instellen in Entity Framework Code-First Initializer

  4. Hoe google translate URL te gebruiken in Oracle plsql