Boa tarde, não consigo localizar o erro que aparece em meu arquivo banco-produto, na função alteraProduto. Seria possível darem uma revisada e verificarem como posso resolver esse erro:
esse é o erro com o teste de envio das informações para o banco-produto:
* inicio alteração * array(8) { ["id"]=> string(1) "6" ["codigo"]=> string(2) "98" ["nome"]=> string(17) "Camisa Salamandra" ["preco"]=> string(6) "110.00" ["descricao"]=> string(10) "salamandra" ["cor_id"]=> string(1) "1" ["tamanho_id"]=> string(1) "1" ["categoria_id"]=> string(1) "1" } * inicio funcao alteraProduto *
O produto Camisa Salamandra não foi alterado: 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 ' tamanho_id= , categoria_id= where id = 6' at line 3
arquivo banco-produto na função alteraProduto onde o erro aparece:
function alteraProduto($conexao, $produto) {
echo ("* inicio funcao alteraProduto * "); //Aviso de teste
$query = "update produtos set nome = '{$produto->getNome()}', codigo = '{$produto->getCodigo()}',
preco = {$produto->getPreco()}, descricao = '{$produto->getDescricao()}',
cor_id= {$produto->getCor()->getId()}, tamanho_id= {$produto->getTamanho()->getId()},
categoria_id= {$produto->getCategoria()->getId()} where id = {$produto->getId()}";
return mysqli_query($conexao, $query);
//Codigo novo - apenas para teste
if ($retorno ==""){
echo ("* retornou ... * "); //Aviso de teste
$retorno = 0;
}
echo ("* fim pesquisa * "); //Aviso de teste
return $retorno;
}
arquivo altera-produto onde envio os dados para alteração
<?php
require_once 'conecta.php';
require_once 'banco-produto.php';
require_once 'banco-cor.php';
require_once 'banco-tamanho.php';
require_once 'banco-categoria.php';
require_once 'produto.php';
require_once 'cor.php';
require_once 'tamanho.php';
require_once 'categoria.php';
$produto = new Produto();
echo ("* inicio alteração * "); //Aviso de teste
$produto->setId( $_POST['id'] );
$produto->setCodigo( $_POST["codigo"]) ;
$produto->setNome( $_POST["nome"]);
$produto->setPreco( $_POST["preco"]);
$produto->setDescricao( $_POST["descricao"]);
$produto->setCor(new Cor());
$produto->getCor( $_POST["cor_id"]);
$produto->setTamanho(new Tamanho());
$produto->getTamanho( $_POST["tamanho_id"]);
$produto->setCategoria(new Categoria());
$produto->getCategoria( $_POST["categoria_id"]);
var_dump($_POST);
if(alteraProduto($conexao, $produto)) { ?>
<!--<script type="text/javascript">
setTimeout(function(){window.location="produto-formulario.php"} , 30000);
</script>-->
<p class="text-success">
O produto <?=$produto->getNome() ?> foi alterado.
</p>
<noscript>
Se não for direcionado automaticamente, clique <a href="produto-lista.php">aqui</a>.
</noscript>
<?php
} else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">O produto <?=$produto->getNome() ?>
não foi alterado: <?= $msg?></p>
<?php
}
?>
<!--
<script language="JavaScript">
window.location="produto-lista.php";
</script>
tabela produtos no BD
Table: produtos
Columns:
id int(11) AI PK
codigo varchar(50)
nome varchar(150)
preco decimal(10,2)
descricao varchar(150)
cor_id tinyint(4)
tamanho_id tinyint(4)
categoria_id tinyint(4)