Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z pesel'em
Forum PHP.pl > Forum > Bazy danych > MySQL
mitp
Witam. Problem dotyczy zapisu pesel'a do bazy.

w tabeli mam:

Cytat
CREATE TABLE `tabela` (
`id` int( 11 ) unsigned NOT NULL AUTO_INCREMENT ,
tu inne pola
`pesel` int( 11 ) NOT NULL default '',
tu inne pola
PRIMARY KEY ( `id` )
);



Są różnice w formularzu i po zapisie do bazy:

w formularzu podaję: 81010109876 a w bazie zapisuje mi pod numerem: 2147483647 - nie wiem co się dzieje.
dr_bonzo
Pole w bazie jest za dlugie jak na liczbe calkowita 32 bitowa ze znakiem, te 2 mld to 2^31 - 1, maksymalna wartosc dodatnia int'a.
Przechowuj pesel jako stringa (char).
mitp
Dziękuję dr_bonzo - działa heh smile.gif
Kinool
mozna tez uzyc typu BIGINT, jesli przeprowadzasz operacje wyszukiwania, porownania itp. po tej kolumnie to zawsze szybse sa typy liczbowe niz tekstowe
dr_bonzo
Cytat
w formularzu podaję: 81010109876 a w bazie zapisuje mi pod numerem: 2147483647 - nie wiem co się dzieje.

Ups, zrozumialem to na odwrot
w bazie masz 81010109876, a php wyswietla ci tylko 2mld.

Zrob tak jak mowi Kinool - BIGINT, dane z formularza wczytuj jako stringi i wrzucaj do SQLa:
  1. <?php
  2. $sql = "INSERT ... (pesel,...) VALUES (" . $pesel; // mimo ze $pesel jest stringiem nie dodawaj w okol niego apostrofow, w celu potra
    ktowania go przez baze jako liczbe (pamietaj o sprawdzeniu czy $pesel posiada tylko cyfry!!!)
  3. ?>


A przy wyciaganiu pesela: sproboj go wyciagnac jako string (tylko nie wiem jak to zrobic), bo w int'cie sie nie zmiesci.
lenczewski
...a nie wystarczy jako typ:

int(11) not null unsigned

?
Kinool
Cytat(lenzcewski @ 2005-11-15 12:50:31)
...a nie wystarczy jako typ:

int(11) not null unsigned

?

unsigned czyli bez znaku zwieksza ci zakres x2 jak pisal dr_bonzo int ma zakres (ze znakiem) 2^31 - 1 czyli 2147483647 wiec w unsigned bedzie mialo 4294967295 jak widzisz jest to za malo do zapisania peselu
SongoQ
Cytat
A przy wyciaganiu pesela: sproboj go wyciagnac jako string (tylko nie wiem jak to zrobic), bo w int'cie sie nie zmiesci.

Z bazy dane i tak sa zwracane jako string wiec wszystko jest ok.
dr_bonzo
Fajnie wiedziec biggrin.gif Nigdy nie psrawdzalem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.