Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wstawić wiele wierszy z tablicy za pomocą frameworka CodeIgniter?

Składanie jednego INSERT instrukcja z wieloma wierszami jest znacznie szybsza w MySQL niż jedna INSERT wyciąg na wiersz.

To powiedziawszy, wygląda na to, że możesz mieć problemy z obsługą ciągów znaków w PHP, co w rzeczywistości jest problemem algorytmu, a nie języka. Zasadniczo, pracując z dużymi ciągami, chcesz zminimalizować niepotrzebne kopiowanie. Przede wszystkim oznacza to, że chcesz uniknąć konkatenacji. Najszybszym i najbardziej wydajnym pod względem pamięci sposobem na zbudowanie dużego ciągu, takiego jak wstawianie setek wierszy naraz, jest skorzystanie z funkcji implode() funkcja i przypisanie tablicy.

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

Zaletą tego podejścia jest to, że nie kopiujesz i nie kopiujesz ponownie instrukcji SQL, które do tej pory zmontowałeś z każdą konkatenacją; zamiast tego PHP robi to raz w implode() oświadczenie. To jest duży wygraj.

Jeśli masz dużo kolumn do złożenia, a jedna lub więcej jest bardzo długa, możesz również zbudować wewnętrzną pętlę, aby zrobić to samo i użyć implode() aby przypisać klauzulę wartości do zewnętrznej tablicy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa funkcja RIGHT() w MySQL

  2. Co dokładnie oznacza zestaw znaków i sortowanie?

  3. Jak znaleźć sortowania obsługiwane przez serwer w MySQL?

  4. Czy muszę chronić się przed wstrzyknięciem SQL, jeśli korzystam z listy rozwijanej?

  5. Zapytanie MySQL uwzględniające wielkość liter