Autor Zpráva
AM
Profil *
Zdravím,
Píšu si funkci, která při zápisu do DB sama ošetří maximální délku dat a potřeboval bych vědět, jak zjistit maximální délku pole v MySQL (z PHP). např.budu mít tabulku:
CREATE TABLE tabulka(
jmeno VARCHAR(20),
heslo VARCHAR,
neco TEXT
);
když budu chtít mojí funkcí uložit do této tabulky řádek, potřebuji nějak zjistit, že do položky jmeno nacpu max. 20 znaků, do položky heslo max. 255 znaků a neco max. 65535 znaků.
Strejda Google mi našel jediné řešení SHOW COLUMNS FROM tabulka, ovšem to bych musel (nejlépe přes regexp funkce) vypitvat maximální délky z typu sloupce, a pro sloupce, které nemají v závorkách definovanou maximální délku (heslo a neco) bych musel vytvořit jakousi tabulku implicitních maximálních délek MySQL záznamů, což se mi zdá jako dost těžkopádné řešení.

Nevíte,prosím,o nějakém řešení, jak jednoduše zjistit maximální délku jakéhokoli sloupce?

a ještě jeden dotaz, int(5) znamená číslo od 0 do 99999? tinyint(1) je od 0 do 9?
Alphard
Profil
do položky heslo max. 255 znaků
délka varchar v novějších verzích může být až 65 tisíc a nějaké drobné

a ještě jeden dotaz, int(5) znamená číslo od 0 do 99999? tinyint(1) je od 0 do 9?
ne
snažil jsem to tu nějak popsat, ale bylo to dost nepřesné, jestli vám nevadí angličtina, raději budu citovat manuál
Another extension is supported by MySQL for optionally specifying the display width of integer data types in parentheses following the base keyword for the type (for example, INT(4)). This optional display width is used to display integer values having a width less than the width specified for the column by left-padding them with spaces.

The display width does not constrain the range of values that can be stored in the column, nor the number of digits that are displayed for values having a width exceeding that specified for the column. For example, a column specified as SMALLINT(3) has the usual SMALLINT range of -32768 to 32767, and values outside the range allowed by three characters are displayed using more than three characters.



jinak se k tomu nevyjadřuji, nevím a nezdá se mi efektivní při každém dotazu ještě tahat max délku
joe
Profil
Nevíte,prosím,o nějakém řešení, jak jednoduše zjistit maximální délku jakéhokoli sloupce?
Vždycky ji vědět a nezjišťovat ji ještě před tím z databáze...
klingac
Profil
delka sa da zistit roznymi sposobmi. najznamejsie je asi pouzitie DESCRIBE:
DESCRIBE nazov_tabulky;

pricom vysledok je v podstate identicky s:
SHOW columns FROM nazov_tabulky;

hladana hodnota sa objavi v sloupci type ale nie iba samotna dlzka ale aj typ, napr:
int(10), varchar(20)

zatial som neprisiel na sposob ako z mysql dostat ciste iba to cislo, pretoze takyto vysledok musim este dodatocne v aplikacii spracovavat. ak niekto viete tak pls poradte
klingac
Profil
datovy typ sa este da zistit pomocou:
SELECT DATA_TYPE FROM information_schema.`COLUMNS` WHERE TABLE_NAME = 'nazov_tabulky';


ale maximalna hodnota information_schema je zas schovana v uplnom zapise typu :(

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