Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Jak wykasować tabele z mysql?
castagir
post 3.12.2014, 10:55:04
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Witam

Potrzebuję pomocy, bo już wymiękam.

Mogłby mi ktoś powiedzieć lub poradzić jak skonstruować zapytanie do bazy danych MySQL, żeby wykasowała wszystkie tabele z bazy danych.
Ewentualnie powiedziała jak się nazywają a wtedy na podstawie nazwy stworzyć nowe zapytanie i wtedy je wykasować.

Dziękuję z góry za pomoc.

Pozdrawiam
Go to the top of the page
+Quote Post
mmmmmmm
post 3.12.2014, 12:47:34
Post #2





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

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


SELECT * FROM information_schema.TABLES WHERE table_schema=...
DROP TABLE ...;

Choć na pewno szybciej będzie usunąć bazę... Pewnie nic oprócz tabel tam nie masz, a i samo usuwanie tabel nie jest proste...
Go to the top of the page
+Quote Post
ikssde
post 3.12.2014, 14:06:59
Post #3





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

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


Najpierw robisz

  1. mysql_query('SHOW TABLES');


Potem na podstawie wyników

  1. mysql_query('DROP TABLE IF EXISTS $tableName');


Jak masz jakieś zależności w bazie danych to przed usuwaniem uruchom, a po zakończeniu ustaw to z powrotem na 1

  1. mysql_query('SET foreign_key_checks = 0');
Go to the top of the page
+Quote Post
castagir
post 3.12.2014, 16:48:48
Post #4





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


@ikssde
Zrobiłem tak jak radziłeś, lecz jest jeden problem. Aby wykasować tabele za pomocą zapytania: mysql_query('DROP TABLE IF EXISTS $tableName');, potrzebuję wyniku zapisanego w formie string. Niestety tego nie ptorafię zrobić. Szukam już trochę w internetach, ale na żadną przydatną instrukcję jeszcze nie trafiłem.
Go to the top of the page
+Quote Post
ikssde
post 3.12.2014, 18:45:32
Post #5





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

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


W czym problem? Cytując php.net

  1. $dbname = 'mysql_dbname';
  2.  
  3. if (!mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
  4. echo 'Could not connect to mysql';
  5. }
  6.  
  7. $sql = "SHOW TABLES FROM $dbname";
  8. $result = mysql_query($sql);
  9.  
  10. if (!$result) {
  11. echo "DB Error, could not list tables\n";
  12. echo 'MySQL Error: ' . mysql_error();
  13. }
  14.  
  15. while ($row = mysql_fetch_row($result)) {
  16. echo "Table: {$row[0]}\n";
  17. }


W pętli while zrzucasz nazwy tabel do tablicy albo od razu robisz usuwanie.
Go to the top of the page
+Quote Post
castagir
post 3.12.2014, 20:43:58
Post #6





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Nadal nic.
W tej postaci, której mi dałeś wyskakuje masa błędów, w których parser proponuje mi użycie mysqli, a po zmianie tych, które się da nową poprawną formę wciąż wyskakuje ten błąd:

  1. Warning: mysql_fetch_row() expects parameter 1 to be resource, object given in

  1. if (!mysqli_connect($serwer_bd, $uzyt_bd, $haslo_bd)) {
  2. echo 'Could not connect to mysql';
  3. }
  4.  
  5. $sql = "SHOW TABLES FROM $nazwa_bd";
  6. $result = mysqli_query($polaczenie_bd, $sql);
  7.  
  8. if (!$result) {
  9. echo "DB Error, could not list tables\n";
  10. echo 'MySQL Error: ' . mysqli_error();
  11. }
  12.  
  13. while ($row = mysql_fetch_row($result)) { // błąd odnosi się do tego wersu
  14. echo "Table: {$row[0]}\n";
  15. }



Czyli jak po staremu. Też mi wyskakiwało poprzedznio cały czas wyskakiwało, gdy chciałem przetworzyć jakoś wynik.
Go to the top of the page
+Quote Post
mmmmmmm
post 3.12.2014, 22:19:15
Post #7





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

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


Łączysz się i wykonujesz zapytanie przez mysqli_*, a wynik pobierasz z mysql_*. To się nie może udać....
Go to the top of the page
+Quote Post
castagir
post 4.12.2014, 17:50:18
Post #8





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Udało mi się wreszcie wyświetlać wynik z zapytania "SHOW TABLES $zmienna".
Załóżmy, że wynik tabel to kilka wersów. Jak zrobić, żeby każda z tabel była zapisana w oddzielnej zmiennej, abym mógł ją użyć w innym bloku?

Zrobiłem coś takiego już:
  1. $pytanie = "SHOW TABLES from ".$nazwa_bd;
  2. $wynik = mysqli_query($polaczenie_bd, $pytanie);
  3.  
  4. while($tabele = mysqli_fetch_array($wynik))
  5. {echo "Tabela: {$tabele[0]}; \n";} // wyświetla wyniki poprawnie
  6.  
  7. $tabela1 = $tabele[0]; // tutaj chciałem sprawdzić czy da się chociaż ręcznie nadać zmiennej nazwę pierwszej tabeli
  8. $pytanie = "DROP TABLE ".$tabela1; // tutaj chciałem wykorzystać ręcznie przekazaną nazwę dla zmiennej. Niestety nic to nie dało i tabela pozostaje wciąż w bazie
  9. $wynik = mysqli_query($polaczenie_bd, $pytanie);
  10.  
  11. $pytanie = "SHOW TABLES from ".$nazwa_bd; // tutaj wykonuję znów zapytanie o pokazanie mi tabel w bazie.
  12. $wynik = mysqli_query($polaczenie_bd, $pytanie);
  13.  
  14. while($tabele = mysqli_fetch_row($wynik))
  15. {echo "Tabela: {$tabele[0]}; \n";} // pokazuje wciąż te same tabele, z przed próby wykasowania chociaż pierwszej.
  16.  
  17. mysqli_close($polaczenie_bd);


Nie mam pojecia co już robić. Te zapytania do bazy danych mnie przerastają i powoli wymiękam, mimo to i tak będe próbował się ich nauczyć. Niestety w szkole jeszcze nie mam tych tematów, więc licze na Was chłopaki!

Ten post edytował castagir 4.12.2014, 17:58:46
Go to the top of the page
+Quote Post
aniolekx
post 4.12.2014, 17:57:42
Post #9





Grupa: Zarejestrowani
Postów: 340
Pomógł: 46
Dołączył: 31.07.2009
Skąd: A

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


chyba prościej będzie jak sobie ściągniesz RedBean i odpalisz:

  1. R::nuke();


wink.gif
Go to the top of the page
+Quote Post
castagir
post 4.12.2014, 18:07:03
Post #10





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Przeglądam tego RedBean'a i nie wiele on chyba by mi pomogl, albo po prostu nie wiem jak bardzo uprasza kontaktowanie sie z baza z poziomu php, nie uzywajac tradycyjnych zapytan.

Mozesz cos powiedziec wiecej o tej "bibliotece"? Mozliwe, ze to jest wlasnie to czego potrzebuje.
Aaaa.... I w jaki sposob moge z tego korzystac? Musze to jakos winstalowac w system czy wystarczy, ze bede to wrzucal jako katalog na hosting i wystarczy jakos sie odniesc do niego?
Go to the top of the page
+Quote Post
ikssde
post 4.12.2014, 20:22:56
Post #11





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

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


Podmień sobie dane i porównaj ze swoim kodem to może znajdziesz błąd.

  1. $connection = mysqli_connect('localhost', 'root', null, 'test');
  2.  
  3. $tables = mysqli_query($connection, 'SHOW TABLES FROM test');
  4.  
  5. while($table = mysqli_fetch_array($tables)) {
  6. mysqli_query($connection, 'DROP TABLE IF EXISTS ' . $table[0]);
  7. }


Powyższy kod kasuje wszystkie tabele z bazy danych.
Go to the top of the page
+Quote Post
aniolekx
post 4.12.2014, 23:07:22
Post #12





Grupa: Zarejestrowani
Postów: 340
Pomógł: 46
Dołączył: 31.07.2009
Skąd: A

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


caly Redbean jest w jednym pliku, wystarczy go zalaczyc do skryptu

  1. require 'rb.php';


pozniej laczysz sie z baza:

  1. R::setup('mysql:host=localhost;dbname=mydatabase','user','password');


Redbean to bardzo specyficzny projekt, np jak wykonasz:

  1. $ksiazka = R::dispense( 'ksiazka' );
  2. $ksiazka->tytul = 'Potop';
  3. $ksiazka->autor = 'Sienkiewicz';
  4. $id = R::store($ksiazka);


To jezeli w bazie nie ma tabeli Ksiazka, to zostanie ona utworzona, wraz z kolumnami tytul, autor i id jako klucz glowny

Jezeli np chcsz wczytac ksiazke z id = 1 i zrobisz:

  1. $ksiazka = R::load('ksiazka',1);
  2. $ksiazka->cena = 100;
  3. R::store($ksiazka);


do istniejacego rekordu zostanie dodana kolumna cena.

Readbean domyslnie dziala w trybie fluid, gdzie takie modyfikacje sa dozwolone, jezeli zmienisz tryb na frozen, nie bedziesz mogl modyfkowac struktury bazy w locie

reszta jest w dokumentacji, nie bede jej przepisywal ;p

Ten projekt jest calkiem ciekawy, ale trzeba wiedziec jak z niego korzystac, zreszta tak jak ze wszytskim wink.gif
Go to the top of the page
+Quote Post
castagir
post 5.12.2014, 11:15:48
Post #13





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Rzeczywiście wydaje się ciekawe. Muszę tego spróbować. Mam jeszcze jedno pytanie.
Czy widzisz jakąś możliwość rozwiązania mojego problemu z pomocą RedBean? Tutaj pokazałeś przykłady z których wynia, że szukający wie czego szuka, a komputer nie posiada inteligencji rozpoznawczej tak jak ludzie, daltego trzeba mu pokazać co może być tym czego oczekujemy. Bo jak na razie to biję się z tym, że potrzebuję niewiadomą zapisać w zmiennej aby później ją wykorzystać.

Co do RedBeana, to sciągam i wbijam go do swojego skryptu. Poczytałem i wydaje się dużo lepszym rozwiązaniem niż tradycyjne funkcje php. biggrin.gif


Sprawa rozwiązana. RedBean jest właśnie tym czego potrzebuję.

Dzięki wszystkim za pomoc i poświecony dla mnie czas. Pozdrawiam! biggrin.gif
Piwko się należy dla Was! tylko nie mam jak postawić.
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: 16.04.2024 - 13:50