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

Erro no myql

Olá pessoal, criei minha classe Produto e minha classe ProdutoDao e coloquei os atributos da minha classe Produto como private. Mas, na hora que vou adicionar algum produto no banco de dados dá este erro: 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 1

Meu arquivo adiciona-produto.php está assim: <?php require_once("cabecalho.php");?> <?php require_once("logica-usuario.php");?> <?php require_once("class/Produto.php");?> <?php require_once("class/Categoria.php");?> <?php require_once("class/ProdutoDao.php");?> <?php require_once("conecta.php");?>

<?php verificaUsuario(); ?>

Minha loja

<?php $produto = new Produto;

$categoria = new Categoria;

//$produto->setId($_POST['categoria_id']); $produto->setNome($_POST["nome"]); $produto->setPreco($_POST["preco"]); $produto->setCategoria($categoria); if(array_key_exists('usado',$_POST)){ $usado = "true"; }else{ $usado = "false"; } $produto->setUsado($usado);

$produtodao = new ProdutoDao($conexao); if($produtodao->insereProduto($produto)){?>

Produto <?php echo $produto->getNome; ?>, <?php echo $produto->getPreco; ?> adicionado com sucesso!

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

Produto <?php echo $produto->getNome; ?>,não foi adicionado: <?php echo $msg; ?>

<?php }

mysqli_close($conexao); ?>

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

e o minha função que insere produto no banco de dados no arquivo ProdutoDao.php está assim: function insereProduto(Produto $produto) { $query = "insert into produtos (nome, PRECO, categoria_id, usado) values ('{$produto->getNome()}',{$produto->getPreco()},{$produto->getId()},{$produto->getUsado()})"; return mysqli_query($this->conexao, $query); }

Por favor, me ajudem.

Obrigada!

4 respostas

Esse erro é de sintaxe provavelmente, olha com atenção provavelmente é uma aspa

Não é falta de aspas, já olhei. Eu acho que ele não tá aceitando os parênteses dos gets. A mjnha query está exatamente assim: $query = "insert into produtos (nome,preco,categoria_id,usado) values ('{$produto->getNome()}',{$produto->getPreco()},{$produto->getCategoria()},{$produto->getUsado()})"; Não tem nenhum erro de sintaxe, ha não ser que os parênteses dos gets que estão dando problemas. Ja tentei de tudo e nada!

E já conferiu no banco de dados os nomes das colunas, tipos de dados que estão nas colunas , mais faz o seguinte da um var_dump na tua $query e ve o retorno dela e posta ai para nós da uma olhada.

solução!

Roger Moraes de Moura, muito obrigada pela ajuda, mas descobri o erro. Olha como estava a minha função para inserir produtos:

public function insereProduto(Produto $produto){ $query = "insert into produtos (nome,preco) values ('{$produto->getNome()}',{$produto->getPreco()})"; return mysqli_query($this->conexao,$produto); } eu vi um erro no meu return: eu modifiquei o return para: return mysqli_query($this->conexao,$query);

E resolveu, realmente era um erro de sintaxe, mas não na query e não era falta de aspas. Demorei muito para perceber, porque achei que o erro estava na query e não no return. Mas, obrigada pela ajuda, precisar só chamar.

Obrigada

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