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

Valores são salvos em duplicidade

Prezados,

Ao inserir um produto através do Form HTML (produto-formulario.php), os valores são inseridos duplicados no BD. Sabem me dizer o porquê ? Segue meu código abaixo:

id nome preco 1 carro 50000 2 carro 50000

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

    $conexao = mysqli_connect('localhost', 'root', '', 'loja');

    $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

    mysqli_query($conexao, $query);
?>


<?php
if(mysqli_query($conexao, $query)) {
?>
<p class="alert-success">Produto <?= $nome; ?>, <?= $preco; ?> adicionado com sucesso!</p>
<?php
} else {
?>
<p class="alert-danger">O produto <?= $nome; ?> não foi adicionado</p>
<?php
}
?>
3 respostas
solução!

Igor, você está chamando duas vezes a função

mysqli_query($conexao, $query)

Uma aqui:

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

    $conexao = mysqli_connect('localhost', 'root', '', 'loja');

    $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

    mysqli_query($conexao, $query);
?>

E outra aqui

<?php
if(mysqli_query($conexao, $query)) {
?>

Cada vez que você chama a função mysqli_query() ela executa a query.

Você pode retornar o sucesso da query na primeira execução e armazenar numa variável e, depois, testar essa variável no if, assim você conseguirá executar uma única vez e exibir a mensagem de sucesso ou falha.

Abraço.

Muito obrigado Manoel, ótima explicação.

Bons estudos, Igor!