Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mysql, BigInt a detekce typu #18

Closed
honzap opened this issue Jul 23, 2010 · 4 comments
Closed

Mysql, BigInt a detekce typu #18

honzap opened this issue Jul 23, 2010 · 4 comments

Comments

@honzap
Copy link

honzap commented Jul 23, 2010

Pokud je v sloupeček typu BIGINT (vysledováno v MySQL databázi), dibi jej označí jako dibi::INTEGER (při automatickém přetypování). Pro 32b systémy je ale int v PHP jenom +/- 2 mld, tudíž se do něj hodnota bigintu z databáze nevejde a výsledek ve vrácených datech přeteče velikost intu (PHP_INT_SIZE). Pokud se provede přetypování na float, již je to v PHP v pořádku.

@dg
Copy link
Owner

dg commented Aug 3, 2010

DibiDatabaseInfo: BIGINT is treated as string [Closed by 6da83a853564ed689ed4f15175f9af54811c3895]

@honzap
Copy link
Author

honzap commented Sep 15, 2010

chyba se stále objevuje. Detekce typu je v tomto případě provedena přes funkci mysql_fetch_field, která vrací pro databázový BIGINT typ int. Následně dojde k přetypování a problém je tu znovu. Třeba u postgresového driveru je to už v pořádku.

@dg
Copy link
Owner

dg commented Sep 15, 2010

Nojo, ale jak teda detekovat, že je to bigint?

@honzap
Copy link
Author

honzap commented Sep 15, 2010

Já to fixnul takto:
DibiResult.php:583: case dibi::INTEGER: return $value > PHP_INT_SIZE ? (float) $value : (int) $value;
Vím, že to není úplně správné řešení, ale v tuto chvíli mě nenapadá nic lepšího.

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants