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

Problema ao passar argumentos para o Banco de Dados

Após assistir a aula 03 sobre herança fiz as modificações no meu código, porém estou com o seguinte erro:

function insereProduto(Produto $produto) {


            $isbn = "";
            if ($produto->temIsbn()) {
                $isbn = $produto->getIsbn();
            }

            $tipoProduto = get_class($produto);
            var_dump($tipoProduto);
            var_dump($isbn);

            $query = "insert into produtos (nome, preco, descricao, categoria_id, 
                usado, isbn, tipoProduto) values ('{$produto->getNome()}', 
                    {$produto->getPreco()}, '{$produto->getDescricao()}', 
                        {$produto->getCategoria()->getId()}, {$produto->isUsado()}, 
                            '{$isbn}', '{$tipoProduto}')";

            return mysqli_query($this->conexao, $query);
        }
string(5) "Livro" string(8) "1bc12345"
O produto Livro não foi adicionado: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '1bc12345', 'Livro')' at line 4

Alguém pode me dizer onde estou errando?

Obrigado.

4 respostas

Acredito que seja por que o valor Livro está em aspas duplas, tentou colocar aspas simples?

quando uso o var_dump ele me retorna o valor da variavel que no caso do $tipoProduto é "Livro", coloquei pra testar se estava passando os valores corretos.

Aparentemente o problema era em {$produto->isUsado()} coloquei entre aspas simples e o problema parou, agora o por que disso eu não sei.

solução!

O campo usado da tabela produtos é que tipo? se você colocou como varchar(1) ele precisa ser entre aspas mesmo, se você colocou ele como boolean, acredito que ele esteja esperando uma string com True ou False, mas é aquela coisa, tá funcionando não mexe!!! hehehe

E o retorno $produto->isUsado() é o que?

Quando eu mexi o código pra deixar ele orientado eu estava primeiro passando os parâmetros da classe produtos e depois atribuindo valor ao usado, e por isso ele sempre ia como NULL, demorei pra ver que era isso pois eu estava mexendo com o isbn e o tipoProduto pensei que fossem eles que estavam zicando tudo. Mas não haha.