Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problema MYSQL

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    133

    Problema MYSQL

    Scusate, ho ripreso in mano da poco un progetto che avevo lasciato a metà. Si trattava della gestione di un DB MySQL in PHP. Dopo essermi rimesso a lavoro, mi sono accorto che nel SQL c'era una differenza (oppure una cosa di cui non m'ero mai accorto prima, ma questo mi sembra più strano): praticamente, se ho una tabella in cui tutti i campi sono NOT NULL, e ho un form in cui inserisco i dati da passare al DB, se non inserisco uno dei dati nel form, la query non mi verifica l'assenza di valore per un determinato campo.

    Farò un breve esempio per capirmi:

    Diciamo che la mia tabella ha due campi, Nome e Cognome, entrambi che non possono prendere valore NULL, e diciamo che insieme formano una chiave primaria.

    Poi ho un form, in cui posso inserire i campi Nome e Cognome. Se io inserisco solo un campo, ad esempio

    Nome:
    Cognome: Rossi

    la query che mi verrà fuori inserirà uno spazio vuoto sotto nome e Rossi sotto cognome.
    Di conseguenza, non posso eseguire nessun tipo di controllo dal lato SQL sull'inconsitenza dei dati? Devo per forza eseguire un controllo con PHP stile:
    if (!GET_[$nome])
    (echo "il campo" .$nome "non è stato compilato") exit;

    Eppure, mi sembra che prima che smettessi di stare appresso al progetto, SQL verificasse la l'effettiva presenza di un dato...

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    tutto quello che può fare mysql in quel caso è andare in errore.
    se riesci ad inserire però vuol dire che un valore riesce a darlo, magari è vuoto '' o ci sono spazi.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    133
    "Strict mode controls how MySQL handles input values that are invalid or missing. A value can be invalid for several reasons. For example, it might have the wrong data type for the column, or it might be out of range. A value is missing when a new row to be inserted does not contain a value for a non-NULL column that has no explicit DEFAULT clause in its definition. (For a NULL column, NULL is inserted if the value is missing.)"

    Questo è quello che sono riuscito a trovare sul manuale di MySQL...sinceramente, pure settando l'SQL in STRICT MODE, continua a non darmi errore se inserisco dei valori vuoti...
    Per valori vuoti indento una query tipo:

    INSERT INTO tabella VALUES('','','')

    non mi da errore, anche se i tre campi sono tutti NOT NULL. Non capisco...

  4. #4
    Originariamente inviato da McKracken
    "Strict mode controls how MySQL handles input values that are invalid or missing. A value can be invalid for several reasons. For example, it might have the wrong data type for the column, or it might be out of range. A value is missing when a new row to be inserted does not contain a value for a non-NULL column that has no explicit DEFAULT clause in its definition. (For a NULL column, NULL is inserted if the value is missing.)"

    Questo è quello che sono riuscito a trovare sul manuale di MySQL...sinceramente, pure settando l'SQL in STRICT MODE, continua a non darmi errore se inserisco dei valori vuoti...
    Per valori vuoti indento una query tipo:

    INSERT INTO tabella VALUES('','','')

    non mi da errore, anche se i tre campi sono tutti NOT NULL. Non capisco...
    un empty non e' un NULL. Se vuoi errore devi omettere il campo e non inserire un valore vuoto. Che e' pur sempre un valore... cioe' un campo NOT NULL senza valore esplicito.

    NULL e NOT NULL e' riferito al tipo di campo e non al contenuto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    INSERT INTO tabella VALUES('','','')
    non sono nulli
    INSERT INTO tabella VALUES(null,null,null)
    così sì oppure omettendo un campo

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    133
    Quindi non c'è nessun modo di avere un messaggio di errore per una query di inserimento con valori vuoti?

  7. #7
    Originariamente inviato da McKracken
    Quindi non c'è nessun modo di avere un messaggio di errore per una query di inserimento con valori vuoti?
    non e' un errore. Il controllo del contenuto devi farlo tu, come qualsiasi altro "doveroso" controllo che si deve fare sui dati passati da un form.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.