Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Usunięcie użytkownika bazy i bazy MySQL
easyshare
post 23.09.2008, 19:47:42
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.09.2008

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


Witam, walczę ze skryptem do usuwania użytkownika bazy danych i samej bazy danych. Po pomyślnym przeprowadzeniu usunięcia tych elementów do bazy mają dodać się odpowiednie wpisy w tabelach db_name db_user db_status . Jak na razie skrypt usuwa jedynie użytkownika :/

  1. <?php
  2. if (isset($_POST['submit3'])) { // Obsługa formularza.
  3.    $query = "SELECT db_status, db_name, db_user FROM users WHERE user_id=$_SESSION[user_id]";
  4.    $result = mysql_query($query);
  5.    if(mysql_num_rows($result) > 0) {
  6.        while($db = mysql_fetch_assoc($result)) {    
  7.        $db_status = $db['db_status'];
  8.        $db_name = $db['db_name'];
  9.        $db_user = $db['db_user'];
  10. }
  11. } else {
  12. echo "Wystąpił błąd systemowy.";
  13. }
  14. }
  15.  
  16. if ($db_name && $db_user && $db_status ) {
  17.    $query = "DROP USER '$db_name'@'localhost'";
  18.    $result = @mysql_query($query);
  19.        if(mysql_affected_rows() > 0) {
  20.        $query = "DROP DATABASE IF EXIST '$db_name'";
  21.        $result = @mysql_query($query);
  22.            if(mysql_num_rows() > 0) {
  23.            $query = "UPDATE users SET db_status='0' WHERE user_id=$_SESSION[user_id]";
  24.            $result = @mysql_query($query);
  25.                }
  26. }
  27. }
  28. ?>
Go to the top of the page
+Quote Post
hateman
post 23.09.2008, 20:16:15
Post #2





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

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


a istnieje w bazie tabela o nazwie $db_name?

Jak nie ma to skrypt nie przechodzi dalej
Jak jest to powinno usuwać i popraw jeszcze jedną linijkę
w Twoim przykładnie nr 23

  1. <?php
  2. if ($db_name && $db_user && $db_status ) {
  3.    $query = "DROP USER '$db_name'@'localhost'";
  4.    $result = @mysql_query($query);
  5.        if(mysql_affected_rows() > 0) {
  6.        $query = "DROP DATABASE IF EXIST '$db_name'";
  7.        $result = @mysql_query($query);
  8.            if(mysql_affected_rows() > 0) {
  9.            $query = "UPDATE users SET db_status='0' WHERE user_id=$_SESSION[user_id]";
  10.            $result = @mysql_query($query);
  11.                }
  12. }
  13. }
  14. ?>
Go to the top of the page
+Quote Post
phpion
post 23.09.2008, 20:23:40
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Masz błąd w zapytaniu usuwającym bazę danych. Wywal apostrofy otaczające nazwę bazy danych:
  1. <?php
  2. $query = "DROP DATABASE IF EXIST $db_name";
  3. ?>

i powinno śmigać.
Go to the top of the page
+Quote Post
easyshare
post 23.09.2008, 20:32:30
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.09.2008

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


poprawiłem wszystko według Waszych zaleceń, ale nada skrypt nie działa jak należy, usuwa tylko użytkownika :/
Go to the top of the page
+Quote Post
hateman
post 23.09.2008, 20:38:52
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

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


a z jakiego użytkownika to usuwasz? smile.gif

Jak usuwasz to jako użytkownik ten którego usuwasz to jak go usuniesz to nie masz już praw do bazy :]
Go to the top of the page
+Quote Post
easyshare
post 23.09.2008, 20:41:55
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.09.2008

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


skrypt działa z zupełnie innego konta użytkownika bazy danych smile.gif użytkownik ten ma pełne uprawnienia smile.gif
Go to the top of the page
+Quote Post
hateman
post 23.09.2008, 20:48:06
Post #7





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

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


no to musisz sprawdzać po kolei co nie gra

wyświetl sobie zmienną $db_name i sprawdź czy istnieje faktycznie taka baza

jeżeli jest to usuń if'a
if(mysql_affected_rows() > 0)

i zostaw samo

$query = "DROP DATABASE IF EXIST $db_name";
$result = @mysql_query($query);

i zobacz czy usunie tą bazę

będziesz wiedział na czym Ci się wysypuje
może na funcji mysql_affected_rows()
też wyświetl sobie jej zawartość po usunięciu użytkownika
Go to the top of the page
+Quote Post
easyshare
post 23.09.2008, 20:59:58
Post #8





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.09.2008

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


skrypt wygląda teraz tak jak poniżej. Usuwa użytkownika, nie usuwa bazy danych, dodaje wpisy do tabeli users, czyli coś nie gra z usunięciem bazy :/ ale co ? ręce mi opadają :/ . zmienna $db_name otrzymuje wartość odpowiadającą usuwanej bazie danych

  1. <?php
  2. if ($db_name && $db_user && $db_status ) {
  3.    $query = "DROP USER '$db_name'@'localhost'";
  4.    $result = @mysql_query($query);
  5.    //    if(mysql_affected_rows() > 0) {
  6.        $query = "DROP DATABASE IF EXIST $db_name";
  7.        $result = @mysql_query($query);
  8. //            if(mysql_affected_rows() > 0) {
  9.                $query = "UPDATE users SET db_status='0', db_name='', db_user='', db_password='' WHERE user_id=$_SESSION[user_id]";
  10.                $result = @mysql_query($query);
  11.                header ("Locatio:  h://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "panel.php");
  12.                }
  13. //}
  14. //}
  15.  
  16. echo $db_status;
  17. echo $db_name;
  18. echo $db_user;
  19. ?>




Zmieniłem zapytanie usuwające bazę na DROP DATABASE $db_name i działa smile.gif ale dlaczego nie działa z DROP DATABASE IF EXIST ?

Ten post edytował easyshare 23.09.2008, 21:05:03
Go to the top of the page
+Quote Post
hateman
post 23.09.2008, 21:03:47
Post #9





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

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


to wywal jeszcze @
i zobacz jaki błąd Ci wywali

$result = mysql_query($query);
Go to the top of the page
+Quote Post
easyshare
post 23.09.2008, 21:12:34
Post #10





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.09.2008

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


wywaliłem @ , nie pokazuje żadnych błędów :/ żeby było ciekawiej , działająca wersja skryptu po oddaniu if ów przestaje działać :/ makabra :/
Go to the top of the page
+Quote Post
hateman
post 23.09.2008, 21:15:53
Post #11





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

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


To ja już nie wiem smile.gif

Jeszcze spróbuj tak:

Kod
$query = "DROP DATABASE ".$db_name;
$result = mysql_query($query);


albo wpisz mu z palca nazwę bazy i sprawdź smile.gif
Go to the top of the page
+Quote Post
easyshare
post 23.09.2008, 21:31:19
Post #12





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.09.2008

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


nie działa w obu przypadkach, może mysql_affected_rows() w przypadku DROP DATABASE nie zwraca żadnego wyniku ?


mysql_affected_rows po usunięciu usera zwraca 0 :/ dlaczego ? powinien 1 przecież

Ten post edytował easyshare 23.09.2008, 21:34:29
Go to the top of the page
+Quote Post
hateman
post 23.09.2008, 21:37:10
Post #13





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

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


Niby powinien a sprawdź tak

mysql_affected_rows($result)
Go to the top of the page
+Quote Post
easyshare
post 23.09.2008, 22:46:19
Post #14





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.09.2008

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


przerobiłem warunki i jest OK , dla zainteresowanych podaje treść skryptu i dziękuje za pomoc
  1. <?php
  2. if (isset($_POST['submit3'])) { // Obsługa formularza.
  3.    $query = "SELECT db_status, db_name, db_user FROM users WHERE user_id=$_SESSION[user_id]";
  4.    $result = mysql_query($query);
  5.    if(mysql_num_rows($result) > 0) {
  6.        while($db = mysql_fetch_assoc($result)) {    
  7.        $db_status = $db['db_status'];
  8.        $db_name = $db['db_name'];
  9.        $db_user = $db['db_user'];
  10. }
  11. } else {
  12. echo "Wystąpił błąd systemowy.";
  13. }
  14. }
  15.  
  16. if ($db_name && $db_user && $db_status ) {
  17.    $query = "DROP USER '$db_name'@'localhost'";
  18.    $result = mysql_query($query);
  19.        if(mysql_affected_rows() == 0) {
  20.        $query = "DROP DATABASE $db_name";
  21.        $result = mysql_query($query);
  22.            if(mysql_affected_rows() == 0) {
  23.                $query = "UPDATE users SET db_status='0', db_name='', db_user='', db_password='' WHERE user_id=$_SESSION[user_id]";
  24.                $result = mysql_query($query);
  25.                header ("Locatio:  htt://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "panel.php");
  26.                }
  27. }
  28. }
  29. ?>
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: 13.06.2025 - 07:27