Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Dodawanie z txt do bazy
shtoc
post
Post #1





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

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


Mam takie pytanie!!
Jak dodaje rekordy do bazy z pliku txt to kazdy nowy wiersz pliku jest nowym rekordem.

Czy mozna zrobic tak zeby skrypt bral 1 wiersz i ustawial jako przyposcmy tytul w bazie i kolejne 10 wierszy i ustawail jako opis. zeby to bylo jednym rekordem. i pote lecial dalej 11 na tytul i kolejne 10 na opis!
czyli plik :
1
2
3
4
5
...
w bazie
id tytul opis
1 1 2 3 4 5...


kod jakim dodaje rekordy z pliku do bazy

  1. <?php
  2. $pdo = new PDO('mysql:host=localhost;dbname=test', 'admin', 'xxx');
  3. $pdo ->query("SET NAMES utf8");
  4. $plik = file("d:ksiazka2.txt");
  5.  
  6. foreach($plik as $tmp)
  7. {
  8. $sql = "INSERT INTO spam (`cont`) VALUES (:cont)";
  9. $statement = $pdo->prepare($sql);
  10. $statement->bindValue(':cont', $aaa, PDO::PARAM_STR);
  11. $statement->execute();
  12. }
  13. ?>


Ten post edytował shtoc 19.01.2009, 15:28:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
shtoc
post
Post #2





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

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


Cytat(Pilsener @ 20.01.2009, 08:25:10 ) *
Po pliku poruszasz się tak:
  1. <?php
  2. $uchwyt = fopen($pliczek,'r');  
  3.   while(!feof($uchwyt)){
  4.      if(fgets($uchwyt)){
  5.            $ile_rekordow++;
  6.        }
  7.   }
  8. fclose($uchwyt);
  9. echo $ile_rekordow;
  10. ?>


1. Przerób najpierw plik tak, aby spełniał Twoje wymagania (to co odczytujesz z jednego pliku od razu możesz zapisać do drugiego)
2. Dodaj plik do bazy używając LOAD DATA INFILE zamiast INSERT - z doświadczenia wiem, że jest to nawet kilkanaście razy szybsze.


ale fgets pobiera linie o zadanej długości, jednak pobieranie konczy sie jak napotka znak <enter>.

a ja potrzebuje zeby pobral przykladowo do jednego rekordu 3 linie po enterach.

czyli jak mam plik :
linia 1 <enter>
linia 2 <enter>
linia 3 <enter>
linia 4 <enter>

to chcę w bazie
w 1 rekordzie
linia 1 linia 2 linia 3
w 2 rekordzie
linia 4.....itd
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 26.12.2025 - 13:23