Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dodanie wielu rekordów na raz
fuqet
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.12.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
cojack
post
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


  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.

Ten post edytował cojack 12.02.2010, 22:34:28


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
tehaha
post
Post #3





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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:)

Ten post edytował tehaha 13.02.2010, 14:52:54
Go to the top of the page
+Quote Post
Pilsener
post
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
tehaha
post
Post #5





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 03:46