Quando tento atualizar as informações do banco de dados apresenta o seguinte erro:
0 Produto pudim de doce de leite não foi alterado: 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 '
Notice: Undefined index: id in C:\xampp\htdocs\loja\produto-a' at line 1
Segue abaixo os cogidos:
produto-altera-formulario.php
<?php include("cabecalho.php");
include("conecta.php");
include("banco-categoria.php");
include("banco-produto.php");
$id = $_GET['id'];
$produto = buscaProduto($conexao, $id);
$categorias = listaCategorias($conexao);
$usado = $produto['usado'] ? "checked='checked'" : "";
?>
<h1>Alterando produto</h1>
<form action="altera-produto.php" method="post">
<input type="hidden" name="id" value="<?=$produto['id']?>">
<table class="table">
<tr>
<td>
Nome:
</td>
<td>
<input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>">
</td>
</tr>
<tr>
<td>
Preco:
</td>
<td>
<input class="form-control" type="number" name="preco" value="<?=$produto['preco']?>">
</td>
</tr>
<tr>
<td>
Descrição:
</td>
<td>
<textarea class="form-control" name="descricao" ><?=$produto['descricao']?></textarea>
</td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" name="usado" <?=$usado?> value="true"> Usado </td>
</tr>
<tr>
<td>Categoria</td>
<td>
<select name="categoria_id" class="form-control">
<?php foreach($categorias as $categoria):
$essaEhACategoria = $produto['categoria_id'] == $categoria['id'];
$selecao = $essaEhACategoria ? "selected='selected'":"";
?>
<option value="<?=$categorias['id']?>" <?=$selecao?> >
<?=$categoria['nome']?>
</option>
<?php endforeach?>
</select>
</td>
</tr>
<tr>
<td>
<button class="btn btn-primary" type="submit">Alterar</button>
</td>
</tr>
</table>
</form>
<?php include("rodape.php")?>
altera-produto.php
<?php include("cabecalho.php");
include("conecta.php");
include("banco-produto.php");
$id = $_POST['id'];
$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
$categoria_id = $_POST['categoria_id'];
if(array_key_exists('usado', $_POST)){
$usado = "true";
} else{
$usado = "false";
}
?>
<?php
if(alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado)) {
?>
<p class="text-success"> O Produto <?= $nome?>, <?= $preco?> foi alterado.</p>
<?php
}else{
$msg = mysqli_error($conexao);
?>
<p class="text-danger">0 Produto <?=$nome?> não foi alterado: <?= $msg ?></p>
<?php
}
?>
<?php include("rodape.php")?>
banco-produto.php
<?php
function listaProdutos($conexao){
$produtos = array();
$resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");
while($produto = mysqli_fetch_assoc($resultado)) {
array_push($produtos, $produto);
}
return $produtos;
}
function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado){
$query = "INSERT INTO produtos (nome, preco, descricao, categoria_id, usado) VALUES ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
return mysqli_query($conexao, $query);
}
function alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado){
$query = "UPDATE produtos SET nome = '{$nome}', preco={$preco}, descricao='{$descricao}',categoria_id={$categoria_id}, usado={$usado} WHERE id ={$id}";
return mysqli_query($conexao, $query);
}
function removeProduto($conexao, $id){
$query = "DELETE from produtos where id = {$id}";
return mysqli_query($conexao, $query);
}
function buscaProduto($conexao, $id){
$query = "SELECT * from produtos where id = {$id}";
$resultado = mysqli_query($conexao, $query);
return mysqli_fetch_assoc($resultado);
}
Desde já agradeço a atenção.