Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + mysql] Sprawdzanie rozmiatu bazy
Forum PHP.pl > Forum > Przedszkole
terreska
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?
mls
  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...
terreska
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ć?
nospor
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
terreska
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.
nospor
  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. ?>
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.