Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodanie wielu rekordów na raz
Forum PHP.pl > Forum > PHP
fuqet
Witam,

mam problem z dodanem wielu rekordów na raz do bazy.

Posiadam liste kodów [500], i chcem je dodać do bazy wszystkie na raz baza nazywa się eazy, tabela users, pole kod.

Kody są tak napisane:

pierszy
drugi
trzeci

Prosze o pomoc, pozdrawiam.
cojack
  1. INSERT INTO "table" ( "kolumna1", "kolumna2" ) VALUES ( 'wartosc1', 'wartosc2' ), ( 'wartosc3', 'wartosc4' ) [...];


A można jeszcze z transakcją na początku dajesz BEGIN a na końcu COMMIT.
tehaha
czy chodzi o kody dotpay?smile.gif czekaj mam gdzieś na to kod napisany

tu formularz

  1. <form action='add_codes.php' method='post' ENCTYPE='multipart/form-data'>
  2.  
  3. <INPUT TYPE='file' NAME='file_name' class='pole'><BR><BR>
  4. <input type='submit' value='Dodaj kody'>
  5. </form>


a tu add_codes.php

  1. $temp_name = $_FILES["file_name"]["tmp_name"];
  2. $file_name = $_FILES["file_name"]["name"];
  3.  
  4. if (is_uploaded_file($temp_name)) {
  5. move_uploaded_file($temp_name, "$file_name");
  6. chmod("$file_name", 0664);
  7. }
  8.  
  9. if ($file_name<>"") {
  10.  
  11. $file = file($file_name);
  12.  
  13. for ($i=0;$i<count($file);$i++) {
  14.  
  15. $code = trim($file[$i]);
  16. $result = mysql_query("INSERT INTO sms (kod) VALUES('$code')");
  17. }


oczywiście samo wklejenie kodu nie wystarczy ale jak znasz podstawy php/ mysql to już sobie poradzisz:)
Pilsener
Wczytanie całego pliku poprzez file by zrobić z tego pętle for? Mało wydajna improwizacja...

Najprościej dodać od razu do bazy cały plik wykorzystując zapytanie LOAD DATA INFILE. Jeśli plik się nie nadaje lub go nie mamy to żaden problem taki plik obrobić/stworzyć:
  1. $uchwyt = fopen('plik.txt','r');
  2. while(!feof($uchwyt)){
  3. $linia_pliku = rtrim(fgets($uchwyt)); //pobieramy plik linia po linii i możemy go obrabiać
  4. }
  5. fclose($uchwyt);

Jest to nawet 10 razy szybsze niż tworzenie gigantycznych lub wiele razy wykonywanych zapytań typu INSERT.

Poczytaj:
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
tehaha
to akurat jakiś stary kawałek kodu, który na szybko wyciąłem, ale dzięki za korektę dobry pomysł z tym
, jakby się jeszcze czepiać do szybkości to zdecydowanie
powinno być wyciągnięte przed pętle, bo w takim przypadku za każdą pętlą plik jest przeliczany
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.