Beh, in realtà l'elemento "nome" dell'array $anagrafica non è vuoto, è inesistente.
La soluzione che ti hanno proposto setta a "" il campo nel DB.

Se invece (come probabile) vuoi che il campo venga lasciato inalterato, devi costruire la query aggiungendo i diversi pezzi a secondo che gli elementi dell'array siano settati o meno, ad esempio

Codice PHP:
if (isset({$Anagrafica['nome']})) q.=' nome="'.$Anagrafica['nome'].'"'