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

Erro ao "adicionar" produto - Ex. 4 da Aula 1 - Classes e Objetos

Aparece o seguinte erro ao tentar adicionar um produto:

O produto não foi adicionado:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 2

erro

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

    $query = "insert into produtos (nome, preco, descricao, categoria_id, usado) 
    values ('{$produto->nome}', '{$produto->preco}', '{$produto->descricao}', '{$produto->categoria}', {$produto->usado})";

    return mysqli_query($conexao, $query);
}

banco_produto.php

$produto = new Produto;

$produto -> nome            = $_POST["nome"];
$produto -> preco           = $_POST['preco'];
$produto -> descricao       = $_POST['descricao'];
$produto -> categoria_id    = $_POST['categoria_id'];
$produto -> usado           = $_POST['usado'];

if(insereProduto($conexao, $produto)) { ?>
    <p class="text-success">O produto<?= $nome ?>,<?= $preco ?> foi adicionado.</p><?php
} else {
    $msg = mysqli_error($conexao);?>
        <p class="text-danger">O produto<?= $nome ?> não foi adicionado:<?= $msg?></p><?php
}?>

adiciona-produto.php

4 respostas

Substitua a $produto->usado pela variável $usado na query

fiz a alteração, o produto foi adicionado porém não aparece na página produtos, o que pode ser agora?

e não entendi a alteração que me propôs, no vídeo e na explicação o prof fez do jeito que estava...

solução!

Oi Leandro,

Antes você havia tratado o retorno da propriedade "usado" dentro da variável assim :

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

e na sua query você estava usando a propriedade do objeto , assim :

$produto->usado

para usar a propriedade do objeto na query, você deveria fazer assim :

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

Para o outro caso, o interessante seria abrir uma nova discussão com os códigos, exatamente como você fez neste caso.

Abraço

Entendi, mt obrigado. Abrirei outra discussão sobre o outro erro, abç.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software