Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505

    [MySQL] - impostare grandezza campi varchar valutando possibili codifiche

    salve, avrei questo dubbio.

    dunque, io ho un sito dove l'utente può inserire delle stringhe.
    tali stringhe non possono superare (ammettiamo) i 200 caratteri. per far questo lato client ho messo dei controlli.

    ovviamente, lato server, controllo nuovamente che la stringa non superi i 200 caratteri (reali, non considerando la codifica utilizzata, nel mio caso utf8).

    quindi applico un bel (con codice php) if(mb_strlen($str, 'utf-8')<201) e in caso positivo faccio un mysql_real_escape_string() su tutta la stringa;
    infine l'aggiungo al database.

    ora il problema è questo :

    se inserisco dei caratteri normali il campo nel database lo piazzerò semplicemente a 200. ma se ci dovessero essere caratteri codificati? devo tener conto di tale range e quindi mettere il campo sul database più grande? (considerando che una codifica è composta più o meno da 4 caratteri per carattere, potenzialmente, se un utente inserisce tutti caratteri speciali, dovrei utilizzare un 800-1000 come length nel varchar).

    mi sembra uno spreco di spazio...
    dove stò sbagliando?

    saluti

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    nessuno?

  3. #3
    Ho lo stesso dubbio, quindi faccio un UP nella speranza che qualcuno chiarisca come impostare la lunghezza dei campi.

    Ad esempio io ho un DB in utf8... con un campo varchar a 120

    ho appena fatto un inserimento tramite un form su una pagina.. che aveva l'input limitato appunto a 120 caratteri.

    mi aspettavo inserisse tutta la stringa... ma invece ha inserito solo 119 caratteri, probabilmente perchè all'interno della stringa c'era qualche carattere particolare che è stato codificato e che ha occupato 2 caratteri, al posto di 1.

    Qualche consiglio/indicazione in merito... ?

    stavo pensando di aumentare di 20 tutti i varchar su db.. ma mi sembra una scelta poco precisa..

    Attendo info da chi ne sa di più, ringrazio in anticipo.

  4. #4
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    E' molto più semplice.
    Definite un varchar lungo anche 60.000 caratteri, e bon.
    Non c'è spreco di spazio, in quanto viene memorizzato solo il puntatore a dove stanno i dati, e la relativa lunghezza.

  5. #5
    Originariamente inviato da lanciafiamme
    E' molto più semplice.
    Definite un varchar lungo anche 60.000 caratteri, e bon.
    Non c'è spreco di spazio, in quanto viene memorizzato solo il puntatore a dove stanno i dati, e la relativa lunghezza.
    se non sbaglio.. non è esattamente possibile fare come dici... perchè

    in una tabella la lunghezza "complessiva" di tutti i campi varchar deve essere di max 65535

  6. #6
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da Pandax
    se non sbaglio.. non è esattamente possibile fare come dici... perchè

    in una tabella la lunghezza "complessiva" di tutti i campi varchar deve essere di max 65535
    Ho infatti messo 60.000

  7. #7
    Originariamente inviato da lanciafiamme
    Ho infatti messo 60.000
    si quello l'ho notato... ma io intendevo che in una tabella sicuramente ci sono diversi campi varchar... e se non ho capito male, il limite di 65.000 è nella somma di tutti i varchar presenti nella tabella, non sul singolo campo.

    o sbaglio.. avevo letto da qualche parte sta cosa.. ma magari sbaglio.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.