Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Uso das aspas "true" / "false" no if de verificação array_key_exists para checkbox

Se utilizo aspas nos termos "true" e "false" no código abaixo conforme orientação dada em aula, recebo o erro.

insert into produtos (nome,preco,descricao,categoria_id,usado) values('Regata Verão masc',25,' descricao da regata masculina','1','true') Produto Regata Verão masc não pode ser adicionado: Incorrect integer value: 'true' for column 'usado' at row 1

Retirei as aspas e funcionou. Pq? Mudou algo? Desculpem estou iniciando e realmente quero entender bem as coisas. ;)

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

True e false são tipos booleanos. Se você tentar escrever "true" ou "false", ele vai pensar que é uma string, por isso o erro.

Na sua query, você pode tentar usar 0 para false e 1 para true, isso também deve funcionar.

solução!

Oi Débora, tudo bom?

Provavelmente isso ocorre pois quando colocamos entre aspas estamos dizendo que aquilo é um texto cujo conteudo é true. Quando retiramos as aspas estamos nos referenciando ao tipo booleano de valor true. Repara que os tipos são diferentes.

Por isso o erro:

Incorrect integer value: 'true' for column 'usado' at row 1

Ele está tentando converter a string "true" para o booleano true.

A representação de um booleano pode variar. Como trabalhamos com o valor verdadeiro e falso, a galera costuma representar também como 0 e 1. Sendo, zero para false e 1 para true.

Por isso ele diz:

Incorrect integer value

Pois ele está tentando transformar o seu "true" em 1 e não consegue. Com o valor true booleano, a tabela de comparação do php consegue identificar ambos como iguais e converter pra você =)

Nessa tabela você encontra todos os criterios de comparação da linguagem!

Boa pergunta =)

Qualquer dificuldade, compartilha com a gente!

Obrigada meninos! Consegui entender! Valeu!