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

Produto não inserido

Quando vou inserir um produto no banco de dados, aparece a seguinte mensagem de erro:

O produto: Carro Gol, 14000 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 ''true'' at line 2

Eu não consegui encontrar onde está o erro você poderia me ajudar?

Segue codigo das paginas:

PRODUTO FORMULARIO: <?php include("cabecalho.php"); include("conecta.php"); include("banco-categoria.php");

$categorias = listaCategoria($conexao); ?>

Formulario de Produto

Nome:
Preço:
Usado
Categoria <?php foreach($categorias as $categoria): ?>
<?=$categoria['nome']?> <?php endforeach ?> Descrição :

<?php include("rodape.php"); ?>

ADICIONA PRODUTO

<?php include("cabecalho.php"); include("conecta.php"); include("banco-produto.php");

$nome = $_POST["nome"]; $preco = $_POST["preco"]; $descricao = $_POST["descricao"]; $categoria_id = $_POST["categoria_id"]; $usado = $_POST["usado"];

if(insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado)){ ?>

O produto: <?= $nome; ?>, <?= $preco ?> adicionado com sucesso!

<?php }else{ $msg= mysqli_error($conexao); ?>

O produto: <?= $nome; ?>, <?= $preco ?> não foi adicionado: <?= $msg ?>

<?php } mysqli_close($conexao); ?>

<?php include("rodape.php"); ?>


BANCO PRODUTO

<?php function listaProdutos($conexao){ $produtos =[]; // array(); $query = mysqli_query($conexao,"select p.*,c.nome as categoria_nome from produto as p join categoria as c on c.id=p.categoria_id"); while($produto = mysqli_fetch_assoc($query)){ array_push($produtos, $produto); }

return $produtos; }

function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado){ return mysqli_query($conexao, "insert into produto (nome, preco, descricao, categoria_id, usado) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}), '{$usado}'"); }

function removeProduto($conexao, $id){ return mysqli_query($conexao, "delete from produto where id= {$id}"); }

4 respostas

Fala Roni,

Tranquilo??

Na função insereProduto() os parâmetros que vem estão vindo corretamente?

O campo usado no banco de dados é um boolean?

Se quiser saber como está sendo o seu código, deixe assim e ele irá escrever o comando SQL, assim você saberá qual é o erro com mais facilidade:

function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado) {

    $query = "insert into produto (nome, preco, descricao, categoria_id, usado) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}), '{$usado}'";
    print_r($query);
    die();
    //return mysqli_query( $conexao, $query );
 }

Resposta enviada duplicada, deletei e deixei só a de cima!

Olá Luiz!

Eu olhei no meu banco de dados. Até refiz o campo usado como boolean.

Mas quando eu vejo a estrutura do campo ele marca como tinyint.

será que pode ser isso o erro?

solução!

Olá boa noite

Eu consegui resolver o erro, refiz a instrução da query, estava com um erro faltando um ")". Ai testei e funcionou normalmente. Agradeço pela atenção.

Refiz algumas vezes o campo usado no banco de dados mas ele ainda ficou com o tipo tinyint, logo percebi que esse não era o problema.

Muito grato pela ajuda Luiz!!!

abraços!!!