Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php + mysql] Sprawdzanie rozmiatu bazy
terreska
post 7.11.2006, 11:05:37
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


Mam skrypt:

  1. <?php
  2. $db_size = 0;
  3. $bazaw =$baza_dane->Database;
  4. $res = mysql_query('SHOW TABLE STATUS FROM $bazaw');
  5. ?>


Pokazuje mi się komunikat:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Jeśli zamiast $bazaw wpisze nazwe bazy to jest ok.
Dlaczego nie mogę użyć zmiennych?
Go to the top of the page
+Quote Post
mls
post 7.11.2006, 11:26:26
Post #2





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


  1. <?php
  2. $db_size = 0;
  3. $bazaw =$baza_dane->Database;
  4. $res = mysql_query("SHOW TABLE STATUS FROM {$bazaw}");
  5. ?>


Czyli " zamiast '...

I dopiszę jeszcze, że nie ma to nic wspólnego ze sprawdzaniem rozmiaru bazy, tak więc tytuł wątka jest co najmniej mylący. Podstawy PHPa się kłaniają, a konkretniej różnice w zapisie w cudzysłowie i apostrofach...

Ten post edytował mls 7.11.2006, 11:28:29


--------------------
Go to the top of the page
+Quote Post
terreska
post 8.11.2006, 10:25:49
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


Jakby nie miał nic wspólnego, to by mi skrypt rozmiaru bazy nie pokazywał, a pokazuje, bo mam jeszcze to:

  1. <?php
  2. while($row = mysql_fetch_array($res))
  3. {
  4. $db_size += $row['Data_length'] + $row['Index_length'];
  5. ?>


To jest dział przedszkole, więc dla osób, które słabo znają się na php.
Dziękuję za pomoc, niestety się nie przydała, bo nie działa. Próbowałam tak.

Czy mógłby ktoś coś na to poradzić?

Ten post edytował terreska 7.11.2006, 11:43:57
Go to the top of the page
+Quote Post
nospor
post 8.11.2006, 10:32:05
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skoro tak ci nie dziala:
  1. <?php
  2. $res = mysql_query("SHOW TABLE STATUS FROM $bazaw"); //maja tu byc " a nie ' jak u ciebie
  3. ?>

a dziala ci wpisanie z palca bazy danych znaczy, ze pod $bazaw nie masz nazwy bazy danych - proste. A czemu tam nie masz nazwy bazy danych to juz sama powinnas wiedziec, bo z kodu co pokazalas to nam juz to nie wynika

daj se:
  1. <?php
  2. print_r($baza_dane);
  3. ?>
i zobacza czy masz wszystko co trzeba


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
terreska
post 8.11.2006, 10:48:09
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


No coś jest nie tak, nie wiem tylko czemu, bo w innych plikach które wymagają połączenia z bazą mam tak samo i wszystko działa. Jak dałam print_r to wywaliło mi to:

cdb Object ( [classname] => CDb [Host] => localhost [Database] => terreska_test [User] => terreska_test [Password] => xxxxx [Auto_Free] => 0 [Debug] => 0 [Halt_On_Error] => yes [Seq_Table] => db_sequence [Record] => Array ( ) [Row] => [Errno] => 0 [Error] => [type] => mysql [revision] => 1.2 [Link_ID] => 0 [Query_ID] => 0 )

Podam cały kod z pliku:

  1. <?php
  2. include('../dane.php');
  3.  $baza_dane=new CDb;
  4.  mysql_pconnect ($baza_dane->Host, $baza_dane->User, $baza_dane->Password) or
  5.  die ("Nie można polaczyc sie z MySQL");
  6.  mysql_select_db ($baza_dane->Database) or
  7.  die ("Nie można polaczyc się z baza");
  8.  
  9. $db_size = 0;
  10.  
  11. print_r($baza_dane);
  12.  
  13. $res = mysql_query('SHOW TABLE STATUS FROM $baza_dane->Database');
  14. while($row = mysql_fetch_array($res))
  15. {
  16. $db_size += $row['Data_length'] + $row['Index_length'];
  17. }
  18.  
  19. if ($db_size<10485760) {
  20. echo '<center>Baza ma rozmiar <b>'.round ($db_size/1024/1024 , 2).'</b> MB.<br><font color="green">Rozmiar prawidlowy.</font>';
  21. } else {
  22. echo '<center>Baza ma rozmiar <b>'.round ($db_size/1024/1024 , 2).'</b> MB.<br><font color="red">Wykonaj optymaizacje bazy.<font>';
  23. }
  24.  
  25. ?>

W dane.php mam podany cały dostęp do bazy i jest na pewno dobrze.

Ten post edytował terreska 8.11.2006, 10:48:38
Go to the top of the page
+Quote Post
nospor
post 8.11.2006, 11:01:54
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. $res = mysql_query('SHOW TABLE STATUS FROM $baza_dane->Database');
  3. ?>

o rety, ale ty jestes odporna na to co ci sie mowi.

wczesniej pokakazno ci przyklad z cudzyslowiem " a nie apostrofem ', a ty mowisz ze juz tak probowales.
Potem ja ci jeszcze w komentach zaznaczylem:
Cytat
//maja tu byc " a nie ' jak u ciebie

a ty dalej swoje i walisz zmienna w tekscie objetym w apostofy. jesli nie wiesz jaka jest roznica to przeczytaj dokladnie to:
http://pl.php.net/manual/pl/language.types.string.php

a teraz wstaw dokladnie co do joty ten kod:
  1. <?php
  2. $res = mysql_query('SHOW TABLE STATUS FROM '.$baza_dane->Database);
  3. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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.08.2025 - 21:52