3
respostas

Há um erro no da explicação explicação na linha do ${preco} ... se mudar para '{$preço}' fica sempre true

Estou usando o alura como ajuda academica e usando a mesma logica do aprendizado, porem meu if sempre dá true - if(insereInformacao($conexao, $erro, $descricao)) { ?> , porque $query = "insert into informacoes(erro, descricao) values ('{$erro}', '{$descricao}')"; onde seguno paramentero não é um integer como nos videos de vcs. no meu caso deixando qualquer campo em branco ele adiciona mesmo assim no BD

3 respostas

Olá, Fabiano.

Não sei se entendi bem sua dúvida, mas vamos lá...

Uma string vazia também é um dado válido para a query citada. Sendo assim, caso você não queira que strings vazias passem para a query, você pode fazer uma verificação antes de executá-la. Algo como:

if (empty($descricao))
    return false;

Espero ter ajudado!

Você está usando as aspas nessa variável. Retire e tente novamente!

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.