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

Hvordan indsætter man flere rækker fra array ved hjælp af CodeIgniter framework?

Samling af én INSERT sætning med flere rækker er meget hurtigere i MySQL end én INSERT erklæring pr. række.

Når det er sagt, så lyder det som om du måske støder ind i strenghåndteringsproblemer i PHP, hvilket virkelig er et algoritmeproblem, ikke et sprog. Grundlæggende vil du, når du arbejder med store strenge, minimere unødvendig kopiering. Primært betyder det, at du vil undgå sammenkædning. Den hurtigste og mest hukommelseseffektive måde at bygge en stor streng på, såsom at indsætte hundredvis af rækker på én, er at drage fordel af implode() funktion og array-tildeling.

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

Fordelen ved denne fremgangsmåde er, at du ikke kopierer og genkopierer den SQL-sætning, du hidtil har samlet med hver sammenkædning; i stedet gør PHP dette en gang i implode() udmelding. Dette er en stor vinde.

Hvis du har mange kolonner, der skal sammensættes, og en eller flere er meget lange, kan du også bygge en indre løkke for at gøre det samme og bruge implode() for at tildele værdisætningen til det ydre array.



  1. Er der nogen måde at få JBoss-forbindelsespuljen til at oprette forbindelse til Oracle igen, når forbindelserne går dårlige?

  2. Kør alle SQL-filer i en mappe

  3. Hvordan kan jeg oprette en liste Array med markørdata i Android

  4. PostgreSQL 9.3:Dynamisk pivottabel