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.