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

Mensagem do mysqli_error

No meu exercício da aula 03 utilizando o mysqli_error está aparecendo a seguinte mensagem:

"O produto não foi adicionado: Erreur de syntaxe pr�s de ')' � la ligne 1"

Pensei que eu havia feito algo de errado, mas depois peguei a resposta e continuar exibindo a mesma mensagem. Será que é por que estou utilizando o WAMP no meu notebook?

7 respostas

Oi Júnior, deu ruim no encoding da mensagem de erro... vc chegou a colar a query escrita no curso no seu projeto? só pergunto pq ele realmente ta falando da sintaxe e eu não acho que o problema seja o wamp.

Olá Alberto! Fui digitando o código conforme assistia a aula e quando surgiu este erro pensei que era erro de digitação minha e fui em seguida copiando e colando o código do professor. Segue a parte do meu código que acredito estar o problema.

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

<?php
$nome = $_GET["nome"];
$preco = $_GET["preco"];

if(insereProduto($conexao, $nome, $preco)) {
?>
<p class="alert-success">Produto <?= $nome; ?>, <?= $preco; ?> adicionado com sucesso!</p>
<?php
} else {
    $msg = mysqli_error($conexao);
?>
   <p class="alert-danger">O produto <? = $nome; ?> não foi adicionado: <?= $msg ?></p>

<?php
}
?>

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

A única diferença percebi do código do professor está no seguinte trecho:

} else {
    $msg = mysqli_error($conexao);
   <p class="alert-danger">O produto <? = $nome; ?> não foi adicionado: <?= $msg ?></p>
?>

Aqui, tem tag HTML dentro do php e dá erro.

Acredito que não seja o caso, mas segue também o código da função para ver se você consegue me ajudar a descobrir onde estou errando:

function insereProduto($conexao, $nome, $preco) {
    $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
    $resultadoDaInsercao = mysqli_query($conexao, $query);
    return $resultadoDaInsercao;
}

Desde já agradeço. Att,

Acredito que o erro esteja na query mesmo. Talvez pq nos valores o $preco está sem aspas, diferente do $nome. Tente isso:

"insert into produtos (nome, preco) values ('$nome', '$preco')"

As Chaves ( { } ) ao redor das variáveis nesse caso são desnecessárias embora não venham a disparar nenhum erro.

Caso não funcione veja o que vem nos parâmetros presentes no $_GET assim:

Abaixo disso

$nome = $_GET["nome"];
$preco = $_GET["preco"];

Insira isso:

var_dump($nome, $preço);die;

Olá Raphael! Coloquei as aspas conforme vc sugeriu, mas agora quando tento cadastrar um produto sem colocar o valor o mysqli_error($conexao) não apresenta erro, pois a string fica assim:

insert into produtos (nome, preco) values ('Caderno', '')

Os "$_GET" estão recebendo os valores corretamente, pois quando preencho os dois campos grava normalmente.

solução!

Olá, Júnior. Acho que não há nenhum problema além da sua mensagem de erro ter saído em francês. Talvez seja algo da configuração ou versão usada. Nesse mesmo exercício eu obtive a seguinte mensagem:

O produto Caneta não foi adicionado: 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 ')' at line 1

Ela diz que há um erro de sintaxe próximo ao ) na linha 1 e é exatamente isso o esperado, pois tentamos inserir um produto sem o preço, assim a query fica:

insert into produtos (nome, preco) values ('Caneta' , )

Repare que há uma vírgula sobrando ali no fim.

Se você obteve essa mensagem quando tentou inserir um produto sem o preço, acredito que esteja tudo certo.

Se deu essa mensagem mesmo quando você inseriu com o preço, aí já não sei dizer o que é.

Bom Dia amigo, por acaso você está digitando o preço com virgula? Ex: 100,00 na hora de preencher? tente apenas com "100" sem vírgula e veja se o erro ocorre novamente. Sobre as aspas, no caso do preço você deixa sem aspas mesmo, pois não se trata de string.

Guilherme, é exatamente isso que está acontecendo com meu exercício: está sobrando uma vírgula na query.

Achei estranho a mensagem de erro e pensei que havia feito algo errado, mas deve ser mesmo alguma configuração diferente no meu WAMP.

Valeu mesmo pela explicação, acabei tirando dúvidas em outras coisas. =D