Problema con il salvataggio di INT in MYSQL

Ho un campo di tipo INT di dimensione 15, quando inserisco un valore di massimo 9 caratteri nessun problema, ma se inserisco un valore maggiore o uguale a 10 caratteri dopo il salvataggio questo viene convertito nel seguente numero 2147483647. La tabella viene popolata attraverso phpmyadmin, ma il problema si verifica anche se i dati li passo attraverso php.

Per esempio:

- se scrivo 557006169 quindi 9 caratteri, al salvataggio non ci sono problemi

- se scrivo 5570061694 quindi 10 caratteri, al salvataggio diventa 2147483647

- se scrivo 2498230934 questo viene sempre convertito nello stesso risultato: 2147483647

Qualcuno ha un idea ?

inviato 7 anni fa
Nando
X 0 X

Il numero 2.147.483.647 è pari a 231 ? 1, ovvero è il numero più grande che si può ottenere utilizzando 32 bit per memorizzare sia numeri positivi che negativi.

Un campo INT memorizza un numero intero con segno utilizzando 4 byte. Il più grande numero (positivo) che si può memorizzare quindi è 2.147.483.647.

Per superare questo limite puoi usare un campo di tipo BIGINT che utilizza 8 byte e che può contenere numeri fino a 9.223.372.036.854.775.807

Il numeretto che si scrive tra parentesi, accanto ad INT (es.: INT(5)), non rappresenta il numero massimo di cifre memorizzate dal campo, ne rappresenta la precisione con cui viene memorizzato o restituito. Quel numero serve a specificare un eventuale padding (ad esempio uno zero padding) da impiegare nella visualizzazione del numero. Ad esempio con un INT(4) ZEROFILL il numero 3 viene restituito così: 0004

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda