Autor | Zpráva | ||
---|---|---|---|
radekt Profil |
#1 · Zasláno: 7. 2. 2013, 11:24:27
Dobrý den, pro zjištění počtu tabulek v databázi používám tento kód:
$dbname = 'mapa'; $pocet_tabulek=0; $sql = "SHOW TABLES FROM $dbname"; $result = mysql_query($sql); if (!$result) { echo "DB Error, could not list tables\n"; echo 'MySQL Error: ' . mysql_error(); exit; } while ($row = mysql_fetch_row($result)) { $pocet_tabulek++; } echo $pocet_tabulek; mysql_free_result($result); Funguje tak, jak má, ale nejde to i jinak - např. neumí to samo o sobě MySQL? |
||
Joker Profil |
#2 · Zasláno: 7. 2. 2013, 12:10:32
radekt:
Počet tabulek v databázi: SELECT count(*) from information_schema.tables WHERE table_schema = 'název databáze'; Poznámky: - mysql_* funkce jsou zastaralé (resp. celé MySQL rozšíření) a budou z PHP odebrány, nahraďte je alternativami (mysqli nebo PDO_MYSQL). - Toto je informace, kterou typická aplikace ke svému běhu prakticky nikdy nepotřebuje, ostatně u typické aplikace by to mělo být pevně dané číslo (výsledkem běhu normální aplikace může být přidávání/změna/mazání záznamů v tabulkách, ale ne přidávání či mazání databázových tabulek). Potřeba něco takového zjišťovat je častý příznak chyby v návrhu databáze (jedna věc co mě napadá kde by to mělo smysl je třeba v instalátoru aplikace ověřování, že se vytvořily všechny tabulky, i když tam by mělo větší smysl kontrolovat existenci každé konkrétní tabulky). |
||
blaaablaaa Profil |
SELECT COUNT(1) FROM information_schema.tables WHERE table_schema = 'mapa'; |
||
radekt Profil |
#4 · Zasláno: 7. 2. 2013, 12:51:21
Vynikající, zase vím o něco víc. Jedno jsem ale nedomyslel: jak počet tabulek dostanu do proměnné php? Nemůžu použít původní způsob, protože ten by vrátil hodnotu 1 a nikoli počet tabulek v databázi.
|
||
Joker Profil |
#5 · Zasláno: 7. 2. 2013, 12:54:28
radekt:
„jak počet tabulek dostanu do proměnné php?“ Stejně jako kamkoliv jinam: Načtete si první sloupec toho co to vrátí. |
||
lorin Profil |
#6 · Zasláno: 7. 2. 2013, 12:57:00
Myslím že to jde takhle:
echo $vysledek[0]; // nebo echo $vysledek["count(*)"]; Byť přiznávám že tím druhým způsobem si nejsem moc jistý. |
||
radekt Profil |
#7 · Zasláno: 7. 2. 2013, 13:30:12
hotovo:
$query = "SELECT count( * ) AS poc_tbl FROM information_schema.tables WHERE table_schema = 'mapa'"; $result = mysql_query($query) or die ("SQL dotaz query_detail nešlo provést"); while ($row = mysql_fetch_array($result)) { echo $row["poc_tbl"]; } K tomu mysqli nebo PDO_MYSQL - ví se, co je perspektivnější (abych např. nepředělal vše na mysqli a to se pak také odebralo)? |
||
Joker Profil |
#8 · Zasláno: 7. 2. 2013, 13:54:06
radekt:
Jde to jednodušeji: $query = "SELECT count( * ) FROM information_schema.tables WHERE table_schema = 'mapa'"; $result = mysql_query($query) or die ("SQL dotaz query_detail nešlo provést"); $row = mysql_fetch_row($result); // while cyklus je zbytečný, výsledkem je jen jedno číslo $pocet = $row[0]; Ale raději ještě jednou připomínám, že je dost zvláštní, že ta aplikace vůbec něco takového potřebuje. |
||
radekt Profil |
#9 · Zasláno: 7. 2. 2013, 14:11:48
Děkuji moc. Aplikace sama to nepotřebuje, ale mám nějaké říkání o jejím vývoji, kde se mimo jiné zmiňuji i o počtu tabulek, tak jsem to nechtěl mít ve statickém textu, když nové tabulky přibudou, abych to nemusel hlídat.
|
||
Časová prodleva: 11 let
|
0