Il problema potrebbe essere che il campo numerico della tabella nel db prevede un default numerico , cioe' 0, mentre se passi una variabile del tipo es.: $var = '' questa risulta essere una stringa. percio' l'errore che ricevi e': incorrect integer value.
Evidentemente il settaggio della variabile di mysql SQL-MODE e' impostata in modo da non accettare valori diversi dal previsto.
Non ti resta che sostituire con il valore "0" (zero) tutti i valori '' (empty) che hai negli switch ovviamente nei campi dove e' previsto un numero, oppure mettere un default 0 nei campi della check box