Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

SQL insereProdutos

Ao tentar inserir um Livro Físico, o SQL reclama sintaxe inválida, por ter objetos vazios. É preciso fazer algum tratamento para vazios que talvez eu tenha perdido pelo caminho?

ERRO: 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 ' '', 'LivroFisico', '', '')' at line 5.

Como ficou o echo na query: insert into produtos (nome, preco, descricao, categoria_id, usado, isbn, tipoProduto, waterMark, taxaImpressao) values ('Nome do Livro', 3, 'Descricao do Livro', 1, , '', 'LivroFisico', '', '')

function insereProdutos(Produto $produto) {

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

    $waterMark = "";
    if($produto->temWaterMark()) {
        $waterMark = $produto->getWaterMark();
    }

    $taxaImpressao = "";
    if($produto->temTaxaImpressao()) {
        $taxaImpressao = $produto->getTaxaImpressao();
    }

    $tipoProduto = get_class($produto);

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

    return mysqli_query($this->conexao, $query);
}
1 resposta
solução!
(nome,            preco, descricao,          categoria_id, usado, isbn, tipoProduto,    waterMark, taxaImpressao) values 
('Nome do Livro',  3,    'Descricao do Livro', 1,                , '',    'LivroFisico', '',        '')

Eu acho que o seu erro está logo após a 'categoria', pois você tem o valor 1 e uma vírgula, todavia não colocou um '', ou até mesmo o valor 0(zero) para depois colocar outra vírgula.