Autor Zpráva
khubajsn
Profil *
Zdravím.
Vytvořil jsem skript na registraci hráčů do herní ligy.
Bohužel to dělá neplechu.
Stanovím proměnnou pin, která je vytvořena s náhodným obsahem:
$pin = rand(1,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9);

A potom s ní dál pracuju - posílám ji mailem, ukládám do db apod.
Jenže si to dělá co chce - dejme tomu, že by proměnná pin byla 1234567890. Mailem ji to pošle v pořádku, ale do databáze uloží úplně jiné číslo.
Celý skript najdete tady
Díky za odpověď,
Khubajsn

P.S.: Omlouvám se za dost nepřehledný kód..
Nox
Profil
Nech si vypsat echem to, co máš v tom query příkazu
Jinak asi je jednodušší dát
$pin = mt_rand(1000000000, 9999999999);
Kajman_
Profil *
Asi to přeteče rozsah int, zkuste pin změnit na bigint.
khubajsn
Profil *
Díky Vám oběma za rady, místi rand jsem použil Noxovo mt_rand, v db jsem pin (int) zaměnil za pin (bigint) a už to funguje - díky moc! :)
*Lock*
rexi
Profil *
nepouziva se spis na tohle varchar?
fandaa
Profil
rexi
nepouziva se spis na tohle varchar?
Na číslo používat typ pro řetězec?
rexi
Profil *
jiste, ale aktivacni link byva spise tvoren nejakym hashem. Mozna v bajtech by to vyslo lip. Je zbytecne to vydavat za cislo kdyz s tim nepracujes jako s cislem, pouze to ctes.
Nox
Profil
rexi
to vydavat za cislo kdyz s tim nepracujes jako s cislem, pouze to ctes
Takže čísla nemají sloužit k tomu, aby se četly?

aktivacni link byva spise tvoren nejakym hashem
No zde očividně ne...

Ani velikost výhodou nebude, pro zakódování 1 číslice jako řetězec je potřeba 1B (ascii 30-39) a teď si to vynásob 10ti, pro zaznamenání max. čísla co tam chceme stačí nějakých 5B
takže řetězcem by to mělo být 2x větší. Ne že bych si byl extra jistý, že to mám dobře, ale i tak
Yur4Y
Profil
Kajman_
Unsigned Int by stačilo.
khubajsn
Profil *
S číslem se pracuje ;)
Díky Yur4Y, už to ale je opravené a funguje to, což je pro mne klíčové xD

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