Autor Zpráva
DarkMeni
Profil
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
Databáze INFORMATION_SCHEMA anebo pro jednotlivé tabulky příkaz DESCRIBE.
ShiraNai7
Profil
Nebo taky
SHOW COLUMNS FROM `tabulka`
DarkMeni
Profil
To je ono!
Tori, ShiraNai7, DĚKUJU! :)
DJ Miky
Profil
Nebo rovnou
SHOW CREATE TABLE tabulka
(to vypíše rovnou SQL příkaz pro vytvoření tabulky)
DarkMeni
Profil
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
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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0