Autor | Zpráva | ||
---|---|---|---|
DarkMeni Profil |
#1 · Zasláno: 19. 6. 2011, 11:52:16
Zdravím, existuje nějaká jednoduchá funkce nebo způsob který by dokázal sehnat názvy sloupců?
Zkoušim vymyslet nějaký jednoduchý systém automatického zálohování databáze a když jsem narazil na vytvoření tabulky při obnově, tak sem se sek u názvu, typu a ostatních vlastnotí sloupce, takže otázka je stejná jako název tématu, lze pomocí php nějakým způsobem zjistit název, typ (popřípadně počet znaků kdyby šlo o CHAR nebo VARCHAR), a další vlastnosti sloupce (například jestli má nastavený DEFAULT, NOT NULL, AUTO_INCREMENT atd)? Název jsem nějak dopatlal, (foreachem s $vysledek as $index=>$data) jenže to by mi zjistilo jen název sloupce a kdyby byla tabulka prázdná tak pak je to průser páč mi to nezjistí nic. |
||
Tori Profil |
#2 · Zasláno: 19. 6. 2011, 12:33:16
Databáze INFORMATION_SCHEMA anebo pro jednotlivé tabulky příkaz DESCRIBE.
|
||
ShiraNai7 Profil |
#3 · Zasláno: 19. 6. 2011, 12:35:26
Nebo taky
SHOW COLUMNS FROM `tabulka` |
||
DarkMeni Profil |
#4 · Zasláno: 19. 6. 2011, 12:58:00
To je ono!
Tori, ShiraNai7, DĚKUJU! :) |
||
DJ Miky Profil |
#5 · Zasláno: 19. 6. 2011, 13:11:12
Nebo rovnou
SHOW CREATE TABLE tabulka |
||
DarkMeni Profil |
#6 · Zasláno: 19. 6. 2011, 14:00:13 · Upravil/a: DarkMeni
To je ještě lepší, akorát když se na to podávím tak názvy tabulek mám v nějakých divných úvozovkách, a jak by se databáze chovala kdyby jsem je tam nahrál i s nima? (nahrála by to normálně, nebo by vrátila false a nebo by to nahrála jako název i s těma úvozovkama?)
|
||
Tori Profil |
#7 · Zasláno: 19. 6. 2011, 15:25:50
DarkMeni:
Ty divné uvozovky (backtick, nevím, jak se to řekne česky) označují názvy databází, tabulek a sloupců. Jejich používání je ve většině případů spíš pro jistotu, ale občas jsou nezbytné (např. pokud se název sloupce/tabulky shoduje s rezervovaným slovem MySQL). |
||
DarkMeni Profil |
#8 · Zasláno: 19. 6. 2011, 15:45:59 · Upravil/a: DarkMeni
Aha, děkuji, takže jestli jsem tě dobře pochopyl tak tyhle dva příklady jsou totožné?
mysql_query("CREATE TABLE `Comments` (`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `sender` VARCHAR(30) NOT NULL DEFAULT 'Undefined', `datetime` VARCHAR(20) NOT NULL DEFAULT '00.00.0000 00:00:00', `comment` TEXT, `info` TEXT, PRIMARY KEY(id))"); //a: mysql_query("CREATE TABLE Comments (id INT UNSIGNED NOT NULL AUTO_INCREMENT, sender VARCHAR(30) NOT NULL DEFAULT 'Undefined', datetime VARCHAR(20) NOT NULL DEFAULT '00.00.0000 00:00:00', comment TEXT, info TEXT, PRIMARY KEY(id))"); Zajímala by mě ještě jedna něc která asi patří jinam ale někdo by to mohl vědět, jde nějak nastavit výchozí hodnotu pro čas? Aby to v případě nezadání místo 00.00.000 00:00:00 vložilo aktualní datum a čas ve formátu DD.MM.RRRR HH:MM:SS? A ještě jedna věc, jestli ty příklady jsou totožné, jak se ten znak píše na české klávesnici (aby sem to nemusel kopírovat)? |
||
Tori Profil |
#9 · Zasláno: 19. 6. 2011, 16:15:52
DarkMeni:
„jak se ten znak píše na české klávesnici“ Na anglické je mezi Escape a Tab, co je na české středník. Zkuste (na české) tutéž klávesu + pravý Alt, nebo levý Alt+90 (sama mám jinak nastavenou klávesnici). Podle wiki je totožný s diakritickým znaménkem, takže možná pak musíte ještě napsat mezeru. „tyhle dva příklady jsou totožné?“ Jelikož pojmenováváte sloupec názvem dat.typu, tak doporučuju první verzi + místo VARCHAR použít DATETIME nebo TIMESTAMP - předejdete problémům s řezením/výběrem podle toho sloupce. Výchozí hodnoty viz timestamp. |
||
Časová prodleva: 13 let
|
0