1
resposta

Não consigo fazer inserção da categoria_id no banco de dados.

Eu recebo o seguinte erro: Você não pode adicionar o produto teste! 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 ')' at line 1

sendo que o meu código está igualzinho o dos exercícios, segue abaixo:

banco-produto.php

<?php include ('conexao-mysql.php') ?>


<?php

    function listaProdutos($conexao) {
        $produtos = array();
        $resultado = mysqli_query($conexao, "select * from produtos");
        while ($produto = mysqli_fetch_assoc($resultado)){
            array_push($produtos, $produto);
        }
        return $produtos;
    }

    function inserirProduto($conexao, $nome, $preco, $descricao, $categoria_id){
        $query = "insert into produtos(nome, preco, descricao, categoria_id) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id})";
        return mysqli_query($conexao, $query);
    }

    function removeProduto($conexao, $id){
        $query = "delete from produtos where id = {$id}";
        return mysqli_query($conexao, $query);
    }
?>

adiciona-produto.php

    <?php

        include ('banco-produto.php');
        include ('conexao-mysql.php');

        $nome = $_POST['nome'];
        $preco = $_POST['preco'];
        $descricao = $_POST['descricao'];
        $categoria_id = $_POST['categoria_id'];

        if(inserirProduto($conexao, $nome, $preco, $descricao, $categoria_id)){
            ?>
            <h1 class="sucessful_Message_test">Você adicionou o produto <?=$nome ?> com o preço R$<?=$preco ?> com sucesso!</h1>
        <?php
        }else{
            $msg = mysqli_error($conexao);
        ?>
            <h1 class="error_Message_test">Você não pode adicionar o produto <?=$nome ?>! Erro: <?= $msg?></h1>
        <?php
        }
    ?>
    <?php include 'cabecalho.php' ?>

produto-formulario.php

<html>
   <?php include 'cabecalho.php'; ?>
   <?php
        include ('banco-categorias.php');
        include ('conexao-mysql.php');

        $categorias = listaCategorias($conexao);
    ?>
   <body>
      <h1 class="title_h1">Cadastre seu produto!</h1>
       <form action="/adiciona-produto.php" method="POST">
       nome do produto:
        <input type="text" name="nome"><br><br>
        preço:
        <input type="number" name="preco"><br><br>
        <textarea name="descricao" rows="8">descrição</textarea>
        <?php foreach ($categorias as $categoria) : ?>
        <br><br>
        <input type="radio" name="categoria_id" value="<?$categoria['id']?>"> <?=$categoria['nome']?>
        <?php endforeach ?>
        <br><br>
        <input type="submit">
    </form>
   </body>

</html>
1 resposta

Oi Fabricio, tudo bom?

Quais dados você ta passando pra função inserirProduto?

Roda um var_dump nesse bloco de código e compartilha com a gente?

Algo como:


function inserirProduto($conexao, $nome, $preco, $descricao, $categoria_id){
var_dump($nome);
var_dump($preco);
var_dump($descricao);
var_dump($categoria_id);
die();
        $query = "insert into produtos(nome, preco, descricao, categoria_id) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id})";
        return mysqli_query($conexao, $query);
    }