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...