sql >> Databáze >  >> RDS >> Mysql

Jak vložit více řádků z pole pomocí frameworku CodeIgniter?

Sestavení jednoho INSERT příkaz s více řádky je v MySQL mnohem rychlejší než jeden INSERT výpis na řádek.

To znamená, že to zní, jako byste se mohli potýkat s problémy se zpracováním řetězců v PHP, což je ve skutečnosti problém algoritmu, nikoli jazyk. V zásadě chcete při práci s velkými řetězci minimalizovat zbytečné kopírování. Primárně to znamená, že se chcete vyhnout zřetězení. Nejrychlejší a z paměti nejúčinnější způsob, jak vytvořit velký řetězec, například pro vkládání stovek řádků do jednoho, je využít implode() funkce a přiřazení pole.

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

Výhodou tohoto přístupu je, že při každém zřetězení nekopírujete a znovu nekopírujete příkaz SQL, který jste dosud sestavovali; místo toho to PHP udělá jednou v implode() prohlášení. Tohle je velký vyhrát.

Máte-li mnoho sloupců k sestavení a jeden nebo více je velmi dlouhých, můžete také vytvořit vnitřní smyčku pro totéž a použít implode() k přiřazení klauzule hodnot k vnějšímu poli.



  1. Získání [archiver] nepodporované verze (1.13) v záhlaví souboru při spuštění pg_restore

  2. SQL Server Management Studio (SSMS)

  3. Implementace fulltextového vyhledávání v SQL Server 2016 pro začátečníky

  4. Resetujte sekvenci v oracle 11g