1
resposta

O produto 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 '2 = 2, usado = true where id = 5' at line 1

Está aparecendo essa mensagem quando tento alterar o produto. Segue código do formulário:

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

$id = $_GET['id'];
$produto = buscaProduto($conexao, $id);
$usado = $produto['usado'] ? "checked='checked'" : "";

$categorias = listaCategorias($conexao); 
?>
<h1>Alterando Produto</h1>
<form action="altera-produto.php" method="post">
    <input type="hidden" name="id" value="<?=$produto['id']?>">
    <table>

        <tr>
            <td>Nome: </td>
            <td><input type="text" name="nome" class="form-control" value="<?=$produto['nome']?>"></td>
        </tr>
        <tr>
            <td>Preço: </td>
            <td><input type="text" name="preco" class="form-control" value="<?=$produto['preco']?>"></td>
        </tr>
        <tr>
            <td>Descrição: </td>
            <td><textarea name="descricao" class="form-control" value="<?=$produto['descricao']?>"></textarea></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 <?=$selecao?> value="<?=$categoria['id']?>"><?=$categoria['nome']?></option>
                    <?php endforeach ?>
                </select>
            </td>
        </tr>
        <tr>
            <td><input type="checkbox" name="usado" <?=$usado?> value="true">Usado</td>
        </tr>
        <tr>
            <td><input type="submit" value="alterar" class="btn btn-primary"></td>
        </tr>
    </table>    
</form>

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

E código do arquivo altera-produto.php:

<?php
include("cabecalho.php");
include("banco-produto.php");
include("conecta.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";
}

    if(alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado)) {
?>
    <p class="alert-success">Produto <?= $nome; ?>, <?= $preco; ?> alterado com sucesso!</p>
<?php
    } else {
        $msg = mysqli_error($conexao);
    ?>
    <p class="alert-danger">O produto <? $nome; ?> não foi alterado: <?= $msg ?></p>
<?php
    }    
?>
<?php include("rodape.php"); ?>
1 resposta

Esse error é de SQL.

Tem como postar seu arquivo contendo seu código SQL?