3
respostas

Erro ao enviar valor lógico false para o banco de dados

Boa tarde pessoal, tenho uma pequena dúvida com relação a passagem de valor booleano para o banco, quando envio como true, ele interpreta corretamente como sendo um valor lógico e salva no banco o valor 1 (como seria de se esperar), porém, quando envio false ele retorna mensagem de erro, aparentemente o php ou o banco de dados não está conseguindo interpretar o false como zero e tenta enviá-lo como string, por isso no código abaixo estou usando diretamente o zero. Alguma sugestão? Abraço.

if (array_key_exists('usado', $_POST)) {
        $usado = true;
    } else {
        $usado = 0;
    }
3 respostas

Tente utilizar typecast. Coloque o seguinte no seu else.

else{ $usado = (boolean) false; }

Obrigado por responder, tentei o comando, mas deu o mesmo erro.

Incorrect integer value: '' for column 'produtousado' at row 1

Thiago, por padrão quando você define algo no PHP como false, ele significa string vazia, para corrigir seu problema declara o false entre aspas:

if (array_key_exists('usado', $_POST)) {
    $usado = "true";
} else {
    $usado = "false";
}

Obs: Nesses casos você pode logar sua query:

echo $query

Provavelmente iria ver que onde informa o valor para o campo boolean estara vazio.

Espero ter ajudado