Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Edytor Zapytan
Forum PHP.pl > Forum > PHP
smarcz
Witam!

Jak zrobić prosty edytor SQL pod PHP - chciałbym dołączać pliki txt z gotowymi tabelami i importować je do bazy coś jak PHPMyAdmin - problem w tym, że nie bardzo rozumiem dlaczego jak wczytuje plik txt do zapytania mysql_query(tekst pliku) nie budują mi się tabele - ale tylko w przypadku kiedy plik zawiera więcej niż jedną tabele

kod zamieszczony w pliku np:
  1. # Host: localhost
  2. # Database: default
  3. # Table: 'aktywacja'
  4. #
  5. CREATE TABLE `aktywacja` (
  6. `id` mediumint(11) NOT NULL AUTO_INCREMENT,
  7. ... ...
  8. PRIMARY KEY (`id`,`idaktywacji`)
  9. ) TYPE=MyISAM;
  10.  
  11. # Host: localhost
  12. # Database: default
  13. # Table: 'ip_dane'
  14. #
  15. CREATE TABLE `ip_dane` (
  16. `znacznik` int(10) UNSIGNED NOT NULL DEFAULT '0',
  17. ... ...
  18. PRIMARY KEY (`znacznik`)
  19. ) TYPE=MyISAM;


Z góry dzięki za wszelkie podpowiedzi smile.gif
Cysiaczek
przenosze na PHP
UDAT
Może dlatego:
Cytat
mysql_query() sends an unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier.


Spróbuj użyć mysqli" title="Zobacz w manualu PHP" target="_manual, powinna ci pomóc funkcja mysqli_multi_query" title="Zobacz w manualu PHP" target="_manual
smarcz
Czyli jakim zapytaniem wykonywać taki import?? mysqli_multi_query - dobra nie zauważyłem że edytowałeś. Jednak nic z tego - funkcja dostępna pod PHP5 a tu praca pod PHP 4
UDAT
Rozbij jedno multi-zapytanie na kilka oddzielnych zapytań. Wykonaj je w transakcji wykonując pojedyńcze zapytania przez mysql_query" title="Zobacz w manualu PHP" target="_manual.

Jak rozbić? W skrócie:
1. Wywal komentarze
2. Szukaj średników

Jak ci się nie uda, spójrz jak robi to phpMyAdmin

Pozdrawiam
smarcz
ok! Będę próbował właśnie tak to zrobić, wyszukując w tekście pliku odpowiednie znaki i dzielił, a następnie za pomoca for lub forech wykonywał zapytanie mysql_query - z podglądu phpMyAdmin - nie bardzo jeszcze rozumiem procesu wiele ikludowanych plików (bibliotek) oraz stosowanie obiektów.


Ale dzięki za podpowiedź. Jak ktoś coś jeszcze by miał do zaoferowania - czekam na posty.

Pozdrawiam
smarcz
Spieszę z odpowiedzią na postawione przez siebie pytanie. Może się komuś przyda, kto będzie tego poszukiwał.

Człowiek czasem zamiast stosować najprostsze elementy poszukuje skomplikowanych rozwiązań co w moim przypadku zaowocowało prawie dniem straconej pracy - stosując wrażenia regularne do rozwikłania problemu który można wykonać w 10 minut.

Tak więc aby wykonać multi zapytanie mysql_query() w php 4 - np.: z importowanego pliku - ja posłużyłem się wklejonym tekstem sql do zmiennej - taki tekst należy rozdzielić na osobne pojedyńcze zapytania.

Zakładam że wyeksportowany plik sql ma postać:

  1. # Database: test
  2. # Table: 'test_aktywacja'
  3. #
  4. CREATE TABLE `test_aktywacja`
  5. ( ... ) TYPE=MyISAM;
  6.  
  7.  
  8. # Database: test1
  9. # Table: 'test_aktywacja1'
  10. #
  11. CREATE TABLE `test_aktywacja1`
  12. ( ... ) TYPE=MyISAM;
  13.  
  14.  
  15. # Database: test2
  16. # Table: 'test_aktywacja2'
  17. #
  18. CREATE TABLE `test_aktywacja2`
  19. ( ... ) TYPE=MyISAM;


na końcu każdego pliku widnieje średnik. Należy zastosować rozwiązanie - zwracam uwagę na ostatni element stworzonej tablicy - należy się go pozbyć - jest pusty:

  1. <?php
  2. $dziel = explode(";", $create_db);
  3.  
  4. /********* Element wyłączony ******************
  5. echo '<pre>';
  6. var_export( $dziel );//tablica funcji
  7. echo '</pre>';
  8. ***********************************************/
  9.  
  10. $koniec = array_pop($dziel);//usuwam ostatni pusty element tablicy i wstawiam do $koniec
  11.  
  12. foreach($dziel as $tworz){
  13.  
  14. $sql = eregi_replace("^.*$", "$tworz;", $tworz);
  15. echo"<br>$sql<hr>";
  16.  
  17. $w = mysql_query($sql);
  18.  
  19. if(!$w){echo "<br>Nie udało się utwożyć <strong>$name</strong><br>";}
  20. }
  21. ?>
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.