Se una casella di controllo è deselezionata, non viene inviata, quindi impostarne il valore su 0 se non è selezionata non aiuterà:restituirà sempre NULL.
Ci sono due modi per risolvere facilmente questo problema:
1) Assumere un NULL nei parametri PHP significa che la casella di controllo è deselezionata. Se la casella di controllo non è sempre presente nella pagina, ciò potrebbe essere problematico. A quanto pare, c'è un numero variabile di caselle di controllo, quindi probabilmente non funzionerà.
2) Aggiungi un input nascosto con lo stesso nome della casella di controllo con il valore 0 PRIMA la casella di controllo. Se la casella di controllo è deselezionata, verrà utilizzato il valore del campo nascosto, se è selezionata verrà utilizzato il valore della casella di controllo.
<input type="hidden" name="checkbox_1" value="0">
<input type="checkbox" name="checkbox_1" value="1">
Nota:se i tuoi nomi sono in una forma di matrice (cioè contengono parentesi quadre), questo non funzionerà, poiché i campi nascosti aumenteranno anche il conteggio della matrice.