2009-10-27 13 views

risposta

6

Risposta breve: non c'è differenza.

La larghezza del display viene riportata nei "metadati". Spetta all'applicazione farne uso. Normalmente è semplicemente ignorato. Non penso che tu possa ottenerlo usando le funzioni di mysql, ma potresti essere in grado di usare mysqli usando mysqli_fetch_field_direct.

+0

Quindi, cosa dovrei inserire quando aggiungo in BIGINT(), nulla non è un'opzione, giusto? Scegli un numero casuale? 42? – Citizen

+0

Non hai nemmeno bisogno delle parentesi; puoi semplicemente dire 'BIGINT'. –

+2

Un servizio Internet gratuito per te, signore! – Citizen

4

Non si dovrebbe modificare nulla in quanto non ha alcun impatto sui dati restituiti. Le informazioni possono essere utilizzate dalle applicazioni che vogliono usarlo.

Vedi http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Un'altra estensione è supportata da MySQL per specificare facoltativamente la larghezza visualizzazione di tipi di dati interi in parentesi che segue la parola chiave base al tipo (per esempio, INT (4)). Questa larghezza di visualizzazione facoltativa può essere utilizzata dalle applicazioni per visualizzare valori interi con larghezza inferiore alla larghezza specificata per la colonna, inserendoli a sinistra con spazi. (Cioè, questa larghezza è presente nei metadati restituiti con insiemi di risultati. Se è usato o non è fino l'applicazione.)

La larghezza del display non vincola l'intervallo di valori che possono essere memorizzato nella colonna, né il numero di cifre che vengono visualizzate per valori con una larghezza superiore a quella specificata per la colonna. Ad esempio, una colonna specificata come SMALLINT (3) presenta il solito intervallo SMALLINT da -32768 a 32767 e vengono visualizzati valori al di fuori dell'intervallo consentito da tre caratteri utilizzando più di tre caratteri.

(enfasi mia)

16

L'argomento a intero tipi in MySQL ha alcun effetto sulla memorizzazione di dati o l'intervallo di valori supportate da ogni tipo di dati.

L'argomento si applica solo alla larghezza di visualizzazione, che può essere utilizzata dalle applicazioni indicate da Jonathan Fingland. Inoltre viene quando usato in combinazione con l'opzione ZEROFILL:

CREATE TABLE foo (
    i INT(3) ZEROFILL, 
    j INT(6) ZEROFILL, 
    k INT(11) ZEROFILL 
); 
INSERT INTO foo (i, j, k) VALUES (123, 456, 789); 
SELECT * FROM foo; 

+------+--------+-------------+ 
| i | j  | k   | 
+------+--------+-------------+ 
| 123 | 000456 | 00000000789 | 
+------+--------+-------------+ 

Vedere come ZEROFILL rende che i dati siano zeri almeno al numero di cifre uguale all'argomento tipo intero.

Senza ZEROFILL, i dati sono occupati nello spazio, ma poiché gli spazi vengono spesso ritagliati comunque, è più difficile notare questa differenza.

Che effetto ha sul codice PHP? Nessuna. Se è necessario esportare i dati colonnari, spaziali o zero pad, è più flessibile usare sprintf(),

Problemi correlati