Autor | Zpráva | ||
---|---|---|---|
muflik Profil * |
#1 · Zasláno: 1. 3. 2010, 00:24:12
Dobrý den, mám nsledující problém, pokuď vypisuji náhodné číslo přes echo tak vše funguje správně, ale pokuď ho začnu ukládat do mysql databáze tak je téměř vždy rovno 2147483647.
<?php ... srand((double)microtime()*1000000); $rand = rand(1000000000,9999999999); $sql = "INSERT INTO test (variabilniSymbol) VALUES ($rand)"; //echo $sql; mysql_query($sql) or die("`.´"); echo "its ok"; ?> Prosim nevite kde by mohla byt chyba ? (na localhostu s vlastnim apache a mysql to funguje spravne ale na netu to nefunguje :( Děkuji. |
||
Alphard Profil |
#2 · Zasláno: 1. 3. 2010, 00:41:25
Hádám, že sloupec variabilniSymbol je typu int a přestřelil jste jeho hodnotu, větší číslo tam neuložíte, použijte třeba bigint. Pozor u finančnictví, další zrady mohou čekat u desetinných čísel, není to žádná sranda.
|
||
DoubleThink Profil * |
#3 · Zasláno: 1. 3. 2010, 00:41:44
Za prvé srand není k ničemu dobrý. Za druhé, velikost náhodného čísla je omezená, viz getrandmax.
|
||
AM_ Profil |
#4 · Zasláno: 1. 3. 2010, 08:12:30
Je opravdu moudré, aby variabilní symbol byl náhodné číslo? pokud máš hodně zákazníků, není zas tak malá pravděpodobnost, že se ta čísla někdy sejdou. Vhodnější by bylo jako VS dávat třeba auto_increment klíč.
|
||
muflik Profil * |
#5 · Zasláno: 1. 3. 2010, 17:08:16
Dobrý den, opravdu pomohla změna typu na bigint děkuji, srand je asi zastaralá funkce a tudíž jsem ji smazal a zdá se, že to funguje stejně :)
AM_: zákazníci jsou hodně specificky cílená skupina a větší počet se neplánuje, ale s tim auto incrementem je to dobrý nápad a při dalším projektu to nejspíš zkusím, ale ještě bych měl otázku, v účetnictví se zrovna nevyznám a myslím že i kdyby se VS občas vygeneroval stejný, tak by to asi nevadilo? Vlastně v návrhu ani nepočítám, že bych ho generoval do faktury. Pokuď by se vygeneroval stejný VS například u dvou objednávek zasebou, tak se zákazník rozezná podle jména a částky nákupu. Ale možná je nějaká povinnost uvádět faktury s nezaměnitelným VSymbolem, nevím. |
||
AM_ Profil |
#6 · Zasláno: 1. 3. 2010, 17:45:46
muflik:
Spíš jde o to proč brát na komára dělo, když plácačka stojí méně a trefí se vždycky. Pokud si objednávky identifikujete podle něčeho jiného, tak to v praxi nevadí, nicméně unikátní identifikace by měla být právě variabilní symbol, a nevidím rozumný důvod generovat ho náhodně, když už máme k dispozici unikátní a navíc mnohem jednodušší číslo. |
||
Časová prodleva: 14 let
|
0