Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> generowanie nowego pliku z danych w tabeli mysql
k-raku
post 9.08.2012, 21:22:45
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.08.2012

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


Witam.

Otóż mam taki problem. Stworzyłem archiwum danych w mysql. Odpowiednie tablice przechowują nazwy, rozszerzenia, rozmiary oraz same pliki w formie blob'a w różnych formatach (pdf, jpg, tiff, txt). Dokładnie 1600 takich rekordów, pliki od 10KB do 1MB. Niesety pomimo iż skrypty które obsługują dodawanie plików do bazy danych działają bez zarzutu (brak błędów podczas dodawania) to podczas odczytywania danych z bazy potrafi wyrzuci komunikat że plik jest uszkodzony pomimo iż oryginał działa bez zarzutu.

Ogólnie, jak czas pokazał, rozwiązanie nietrafione. Tyle wstępu.

Czy jest możliwość napisać skrypt który będzie pobierał informacje z bazy danych tzn: nazwę pliku, rozszerzenie oraz zawartość blob'a i generował nowy plik w specjalnym katalogu? Wyciągnie wszystkie 1600 rekordów i utworzy 1600 plików z odpowiednimi nazwami oraz rozszerzeniami?

Czy ktoś ma jakiś pomysł jak do tego podejść bo średnio mi się widzi pobieranie i zapisywanie na dysku kolejno wszystkiego. dry.gif
Go to the top of the page
+Quote Post
d3ut3r
post 10.08.2012, 02:53:11
Post #2





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


Możesz pokazać jak zapisałeś te dane w bazie ? (chodzi o kod php).



--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
k-raku
post 10.08.2012, 06:22:02
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.08.2012

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


tabela mysql przechowująca dane
  1. $sql = mysql_query("CREATE TABLE IF NOT EXISTS `dane` ( `id_p` int(4) NOT NULL AUTO_INCREMENT,
  2. `id_d` int(4) NOT NULL,
  3. `org_pdf` longblob NOT NULL,
  4. `org_typ` varchar(50) COLLATE utf8_polish_ci NOT NULL,
  5. `org_size` varchar(50) COLLATE utf8_polish_ci NOT NULL,
  6. PRIMARY KEY (`id_p`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci") OR DIE (.mysql_error());


insert danych do tabeli:

  1. if( is_uploaded_file( $_FILES['rys_org']['tmp_name'] ) )
  2. {
  3. $tmpName = $_FILES['rys_org']['tmp_name'];
  4. $fp = fopen($tmpName, 'r');
  5. $file = fread($fp, filesize($tmpName));
  6. $file_org = addslashes($file);
  7. $name_org = $_FILES['rys_org']['name'];
  8. $name_1 = explode(".",$name_org);
  9. $ile_1 = count($name_1);
  10. $ext_org = $name_1[$ile_1-1];
  11. $name_2 = array_slice ($name_1, 0, $ile_1-1);
  12. $name_org = implode(".", $name_2);
  13. $typ_org = $_FILES['rys_org']['type'];
  14. $size_org = $_FILES['rys_org']['size'];
  15.  
  16. $sql = mysql_query("INSERT INTO `dane` VALUES ('','$id_d','$file_org','$ext_org','$typ_org','$size_org')", $link)
  17. OR DIE (.mysql_error());
  18. }


Go to the top of the page
+Quote Post
mmmmmmm
post 10.08.2012, 07:28:41
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


3 błędy:
1 - za dużo pól w VALUES - 6 pól, a w tabeli jest 5
2 - pierwszy powinien być NULL, a nie '' (wartość pusta)
3 - or die(mysql_error())
Go to the top of the page
+Quote Post
k-raku
post 10.08.2012, 07:43:24
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.08.2012

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


mmmmmmm
ad.1 - w tablicy jest 6 pól i 6 pakuje insert - bład przy kopiowaniu kodu
ad.2 - czy NULL czy ' ' - wszystko działa bez problemu - `id_p` int(4) NOT NULL AUTO_INCREMENT
ad.3 - przed kropką jest informacja które konkretnie zapytanie w jakim pliku się zrypało - wycięte bo to nie jest nikomu potrzebne

może zaczniemy jeszcze raz problem nie dotyczy insertu danych do tablicy bo to działa

problem dotyczy tworzenia nowych plików z rozszeżeniami pdf, txt, jpg z danych które już się znajdują w tablicy
Go to the top of the page
+Quote Post
d3ut3r
post 10.08.2012, 11:08:55
Post #6





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


miałem taki sam problem, okazało się że to była wina addslashes, używaj mysql_real_escape_string lub PDO


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
k-raku
post 10.08.2012, 11:33:45
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.08.2012

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


zmieniłem addslashes na mysql_real_escape_string i niestety w dalszym ciągu część dodawanych plików idzie ok inne corrupted

ogólnie idea trzymania plików w bazach mysql jest do kitu ale człowiek musiał przetestowac po swojemy by się przekonać i teraz mam problem

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 Wersja Lo-Fi Aktualny czas: 25.04.2024 - 11:06