Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да вмъкна няколко реда от масив с помощта на рамката CodeIgniter?

Сглобяване на един INSERT оператор с множество реда е много по-бърз в MySQL от един INSERT изявление на ред.

Въпреки това, изглежда, че може да се сблъскате с проблеми с обработката на низове в PHP, което наистина е проблем с алгоритъма, а не с езика. По принцип, когато работите с големи низове, искате да сведете до минимум ненужното копиране. На първо място, това означава, че искате да избегнете конкатенацията. Най-бързият и най-ефективният от паметта начин за изграждане на голям низ, като например за вмъкване на стотици редове в един, е да се възползвате от implode() функция и присвояване на масив.

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

Предимството на този подход е, че не копирате и повторно копирате SQL израза, който досега сте сглобявали с всяка конкатенация; вместо това PHP прави това веднъж в implode() изявление. Това е голям победа.

Ако имате много колони за събиране и една или повече са много дълги, можете също да изградите вътрешен цикъл, за да направите същото и да използвате implode() за да присвоите клаузата за стойности на външния масив.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO::PARAM за тип десетичен?

  2. Какво представлява низът за свързване на MySQL JDBC драйвер?

  3. node.js mysql грешка:ECONNREFUSED

  4. mysql_real_escape_string() и mysql_escape_string() достатъчни ли са за сигурността на приложението?

  5. MySQL Премахване на дублиращи се записи