Se na sua tabela os campos são do tipo varchar e estão marcados como não nulos, você vai conseguir gravar ao postar dados vazios, já que uma string vazia é um dado válido.
Neste caso, teria que seguir a sugestão citada acima, usar o empty() primeiro para validar se os campos estão preenchidos, para só depois gravar.
Ocorreria erro ao tentar inserir se por exemplo você tiver um campo número e tentar gravar um texto, mas esse não é o seu caso. Nesta situação, sim, ele acabaria dando false na programação do seu if
Para fazer com que o banco não aceite string vazias você precisaria criar um gatilho (trigger) a ser disparado antes de gravar. Isso é algo que exige um pouco mais de trabalho. No caso do MySQL seria algo como:
CREATE TRIGGER <name of the trigger> BEFORE INSERT ON <name of table>
FOR EACH ROW BEGIN
IF NEW.<fieldname> = ''
THEN
SET NEW='Error: Cannot insert record empty value for <fieldname>';
END IF;
END
;
Aqui tem uma explicação sobre isso:
http://www.brokenbuild.com/blog/2006/08/15/mysql-triggers-how-do-you-abort-an-insert-update-or-delete-with-a-trigger/
Na prática, o melhor seria a solução mais simples, ou seja, validar os campos antes de gravar.