Problem inserting data into a mysql database via PHP

Asked

Viewed 98 times

1

Hello, the problem mentioned is that even after several attempts, my form cannot enter the customer data in the database.

Apparently the data entry is successful, but no information is entered, and no error is reported after all.

Bank table:

inserir a descrição da imagem aqui

Code:

<?php

// conecta com o banco
$db = mysqli_connect("localhost", "root", "", "login");

    $errors = array();

    // define as variáveis
    $nome = "";
    $data_de_nascimento = "";
    $numero_de_cadastro = "";
    $CEP = "";
    $numero = "";
    $bairro = "";
    $endereço = "";
    $cidade = "";
    $complemento = "";
    $uf = "";
    $telefone_residencial = "";
    $telefone_comercial = "";
    $categoria_de_cliente = "";
    $telefone_celular = "";
    $telefone_0800 = "";
    $CPF = "";
    $insc_estadual = "";
    $CNPJ = "";
    $RG = "";
    $insc_municipal = "";
    $PIS = "";
    $site = "";
    $email = "";
    $historico = "";

    // se o botão for clicado...
    if (isset($_POST['register_btn'])) {
        session_start();
        // coleta os dados dos imputs
        $nome = mysqli_real_escape_string($db, $_POST['nome']);
        $data_de_nascimento = mysqli_real_escape_string($db, $_POST['data_de_nascimento']);
        $numero_de_cadastro = mysqli_real_escape_string($db, $_POST['numero_de_cadastro']);
        $CEP = mysqli_real_escape_string($db, $_POST['CEP']);
        $numero = mysqli_real_escape_string($db, $_POST['numero']);
        $bairro = mysqli_real_escape_string($db, $_POST['bairro']);
        $endereço = mysqli_real_escape_string($db, $_POST['endereço']);
        $cidade = mysqli_real_escape_string($db, $_POST['cidade']);
        $complemento = mysqli_real_escape_string($db, $_POST['complemento']);
        $uf = mysqli_real_escape_string($db, $_POST['uf']);
        $telefone_residencial = mysqli_real_escape_string($db, $_POST['telefone_residencial']);
        $telefone_comercial = mysqli_real_escape_string($db, $_POST['telefone_comercial']);
        $categoria_de_cliente = mysqli_real_escape_string($db, $_POST['categoria_de_cliente']);
        $telefone_celular = mysqli_real_escape_string($db, $_POST['telefone_celular']);
        $telefone_0800 = mysqli_real_escape_string($db, $_POST['telefone_0800']);
        $CPF = mysqli_real_escape_string($db, $_POST['CPF']);
        $insc_estadual = mysqli_real_escape_string($db, $_POST['insc_estadual']);
        $CNPJ = mysqli_real_escape_string($db, $_POST['CNPJ']);
        $RG = mysqli_real_escape_string($db, $_POST['RG']);
        $insc_municipal = mysqli_real_escape_string($db, $_POST['insc_municipal']);
        $PIS = mysqli_real_escape_string($db, $_POST['PIS']);
        $site = mysqli_real_escape_string($db, $_POST['site']);
        $historico = mysqli_real_escape_string($db, $_POST['historico']);

        // define cada mensagem de erro se os campos não forem preenchidos
        if (empty($nome)) { array_push($errors, "Nome é obrigatório"); }
        if (empty($data_de_nascimento)) { array_push($errors, "Data de Nascimento é obrigatório"); }
        if (empty($numero_de_cadastro)) { array_push($errors, "Numero de Cadastro é obrigatório"); }
        if (empty($CEP)) { array_push($errors, "CEP é obrigatório"); }
        if (empty($numero)) { array_push($errors, "Numero Residencial é obrigatório"); }
        if (empty($bairro)) { array_push($errors, "Bairro é obrigatório"); }
        if (empty($endereço)) { array_push($errors, "Endereço é obrigatório"); }
        if (empty($cidade)) { array_push($errors, "Cidade é obrigatório"); }
        if (empty($complemento)) { array_push($errors, "Complemento é obrigatório"); }
        if (empty($uf)) { array_push($errors, "UF é obrigatório"); }
        if (empty($categoria_de_cliente)) { array_push($errors, "Categoria de Cliente é obrigatório"); }
        if (empty($CPF)) { array_push($errors, "CPF é obrigatório"); }
        if (empty($insc_estadual)) { array_push($errors, "Inscrição Estadual é obrigatório"); }
        if (empty($RG)) { array_push($errors, "RG é obrigatório"); }
        if (empty($insc_municipal)) { array_push($errors, "Inscrição Municipal é obrigatório"); }
        if (empty($PIS)) { array_push($errors, "PIS é obrigatório"); }

        // Grava os dados no banco
        $sql = "INSERT INTO registro(nome, data_de_nascimento, numero_de_cadastro, CEP, numero, bairro, endereço, cidade, complemento, uf, telefone_residencial, telefone_comercial, categoria_de_cliente, telefone_celular, telefone_0800, CPF, insc_estadual, CNPJ, RG, insc_municipal, PIS, site, historico) VALUES('$nome', '$data_de_nascimento', '$numero_de_cadastro', '$CEP', '$numero', '$bairro', '$endereço', '$cidade', '$complemento', '$uf', '$telefone_residencial', '$telefone_comercial', '$categoria_de_cliente', '$telefone_celular', '$telefone_0800', '$CPF', '$insc_estadual', '$CNPJ', '$RG', '$insc_municipal', '$PIS', '$site', '$historico')";
        mysqli_query($db, $sql);
        // Redireciona para outra pagina caso seja bem sucedido
        header("location: painel.php");
    }

?>

<!DOCTYPE html>
<html>
<head>
    <title>Registro Simples</title>
</head>
<body>

<form action="reg2.php" method="post">
  <? include('errors.php') ?>
  Nome:<br>
  <input type="text" name="nome" required>
  <br>
  Data de nascimento:<br>
  <input type="text" name="data_de_nascimento">
  <br>
  Numero de cadastro:<br>
  <input type="text" name="numero_de_cadastro" required>
  <br>
  CEP:<br>
  <input type="text" name="CEP" required>
  <br>
  Numero residencial:<br>
  <input type="text" name="numero" required>
  <br>
  Bairro:<br>
  <input type="text" name="bairro" required>
  <br>
  Endereço:<br>
  <input type="text" name="endereço" required>
  <br>
  Cidade:<br>
  <input type="text" name="cidade" required>
  <br>
  Numero de cadastro:<br>
  <input type="text" name="numero_de_cadastro" required>
  <br>
  Complemento:<br>
  <input type="text" name="complemento" required>
  <br>
  UF:<br>
  <input type="text" name="uf" required>
  <br>
  Telefone Residencial:<br>
  <input type="text" name="telefone_residencial" required>
  <br>
  Telefone Comercial:<br>
  <input type="text" name="telefone_comercial" required>
  <br>
  Categoria de cliente:<br>
  <input type="text" name="categoria_de_cliente" required>
  <br>
  Telefone Celular:<br>
  <input type="text" name="telefone_celular" required>
  <br>
  Telefone 0800:<br>
  <input type="text" name="telefone_0800" required>
  <br>
  CPF:<br>
  <input type="text" name="CPF" required>
  <br>
  Inscrição Estadual:<br>
  <input type="text" name="insc_estadual" required>
  <br>
  CNPJ:<br>
  <input type="text" name="CNPJ" required>
  <br>
  RG:<br>
  <input type="text" name="RG" required>
  <br>
  Inscrição Municipal:<br>
  <input type="text" name="insc_municipal" required>
  <br>
  PIS:<br>
  <input type="text" name="PIS" required>
  <br>
  Site:<br>
  <input type="text" name="site" required>
  <br>
  Email:<br>
  <input type="text" name="email" required>
  <br>
  Historico:<br>
  <input type="text" name="historico" required>
  <br><br>
  <input type="submit" name="register_btn" value="Register">
</form>

</body>
</html>

I use the WAMP SERVER.

Thank you!

  • How are you saving the transaction? You are using COMMIT?

  • Is your environment set to display all errors and warnings? Try putting a condition in your query: if (!mysqli_query($db, $sql)) die('Erro na query'); because regardless of error or success, you are redirected to header("location: painel.php");

  • @Tiagocasanova I’m using a COMMIT, but it doesn’t change anything

  • @Lipespry I did as suggested and this error appeared: "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 ' o, city, add-on, Uf, residential phone, business phone, categori' at line 1"

  • @Nithogg consider [Edit] your question and add that information. Apparently it’s a coding problem. Note that the ç is not appearing correctly. Check that you are using the same charset in PHP and the database.

  • @Lipespry I will edit yes, well pointed.

Show 1 more comment

1 answer

0


A silly mistake, but I ended up finding the solution with the help of other users.

Follows the solution:

As informed in the comments, I added an IF to receive the error, and the page was forwarded even with a problem sending data.

After that, I got the problem:

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 ' o, city, complement, Uf, residential phone, phone_commercial, categori' at line 1

It is important to emphasize that the character ç is not being processed due to the lack of a specific paste in the code, so I used a small IF that defines exactly which paste to use:

if (!mysqli_set_charset($conn, 'utf8')) {
    printf('Error ao usar utf8: %s', mysqli_error($conn));
    exit;
    }

Thus, the next error displayed was:

Field 'email' doesn’t have a default value

Since I had only not added the EMAIL input variable to be inserted in db, after this correction, the information is normally inserted in the database.

Thus, the updated code:

<?php

// conecta com o banco
$db = mysqli_connect("localhost", "root", "", "login");

if (!mysqli_set_charset($db, 'utf8')) {
    printf('Error ao usar utf8: %s', mysqli_error($db));
    exit;
  }

    $errors = array();

  $erro = array();

    // define as variáveis
      $nome = "";
    $data_de_nascimento = "";
    $numero_de_cadastro = "";
    $CEP = "";
    $numero = "";
    $bairro = "";
    $endereço = "";
    $cidade = "";
    $complemento = "";
    $uf = "";
    $telefone_residencial = "";
    $telefone_comercial = "";
    $categoria_de_cliente = "";
    $telefone_celular = "";
    $telefone_0800 = "";
    $CPF = "";
    $insc_estadual = "";
    $CNPJ = "";
    $RG = "";
    $insc_municipal = "";
    $PIS = "";
    $site = "";
    $email = "";
    $historico = "";

    // se o botão for clicado...
    if (isset($_POST['register_btn'])) {
        session_start();
        // coleta os dados dos imputs
        $nome = mysqli_real_escape_string($db, $_POST['nome']);
        $data_de_nascimento = mysqli_real_escape_string($db, $_POST['data_de_nascimento']);
        $numero_de_cadastro = mysqli_real_escape_string($db, $_POST['numero_de_cadastro']);
        $CEP = mysqli_real_escape_string($db, $_POST['CEP']);
        $numero = mysqli_real_escape_string($db, $_POST['numero']);
        $bairro = mysqli_real_escape_string($db, $_POST['bairro']);
        $endereço = mysqli_real_escape_string($db, $_POST['endereço']);
        $cidade = mysqli_real_escape_string($db, $_POST['cidade']);
        $complemento = mysqli_real_escape_string($db, $_POST['complemento']);
        $uf = mysqli_real_escape_string($db, $_POST['uf']);
        $telefone_residencial = mysqli_real_escape_string($db, $_POST['telefone_residencial']);
        $telefone_comercial = mysqli_real_escape_string($db, $_POST['telefone_comercial']);
        $categoria_de_cliente = mysqli_real_escape_string($db, $_POST['categoria_de_cliente']);
        $telefone_celular = mysqli_real_escape_string($db, $_POST['telefone_celular']);
        $telefone_0800 = mysqli_real_escape_string($db, $_POST['telefone_0800']);
        $CPF = mysqli_real_escape_string($db, $_POST['CPF']);
        $insc_estadual = mysqli_real_escape_string($db, $_POST['insc_estadual']);
        $CNPJ = mysqli_real_escape_string($db, $_POST['CNPJ']);
        $RG = mysqli_real_escape_string($db, $_POST['RG']);
        $insc_municipal = mysqli_real_escape_string($db, $_POST['insc_municipal']);
        $PIS = mysqli_real_escape_string($db, $_POST['PIS']);
        $site = mysqli_real_escape_string($db, $_POST['site']);
        $historico = mysqli_real_escape_string($db, $_POST['historico']);
        $email = mysqli_real_escape_string($db, $_POST['email']);

        // define cada mensagem de erro se os campos não forem preenchidos
        if (empty($nome)) { array_push($errors, "Nome é obrigatório"); }
        if (empty($data_de_nascimento)) { array_push($errors, "Data de Nascimento é obrigatório"); }
        if (empty($numero_de_cadastro)) { array_push($errors, "Numero de Cadastro é obrigatório"); }
        if (empty($CEP)) { array_push($errors, "CEP é obrigatório"); }
        if (empty($numero)) { array_push($errors, "Numero Residencial é obrigatório"); }
        if (empty($bairro)) { array_push($errors, "Bairro é obrigatório"); }
        if (empty($endereço)) { array_push($errors, "Endereço é obrigatório"); }
        if (empty($cidade)) { array_push($errors, "Cidade é obrigatório"); }
        if (empty($complemento)) { array_push($errors, "Complemento é obrigatório"); }
        if (empty($uf)) { array_push($errors, "UF é obrigatório"); }
        if (empty($categoria_de_cliente)) { array_push($errors, "Categoria de Cliente é obrigatório"); }
        if (empty($CPF)) { array_push($errors, "CPF é obrigatório"); }
        if (empty($insc_estadual)) { array_push($errors, "Inscrição Estadual é obrigatório"); }
        if (empty($RG)) { array_push($errors, "RG é obrigatório"); }
        if (empty($insc_municipal)) { array_push($errors, "Inscrição Municipal é obrigatório"); }
        if (empty($PIS)) { array_push($errors, "PIS é obrigatório"); }

        // Grava os dados no banco
        $sql = "INSERT INTO registro(nome, data_de_nascimento, numero_de_cadastro, CEP, numero, bairro, endereço, cidade, complemento, uf, telefone_residencial, telefone_comercial, categoria_de_cliente, telefone_celular, telefone_0800, CPF, insc_estadual, CNPJ, RG, insc_municipal, PIS, site, historico, email) VALUES('$nome', '$data_de_nascimento', '$numero_de_cadastro', '$CEP', '$numero', '$bairro', '$endereço', '$cidade', '$complemento', '$uf', '$telefone_residencial', '$telefone_comercial', '$categoria_de_cliente', '$telefone_celular', '$telefone_0800', '$CPF', '$insc_estadual', '$CNPJ', '$RG', '$insc_municipal', '$PIS', '$site', '$historico', '$email')";
        if (!mysqli_query($db, $sql)) die(mysqli_error($db));
        // Redireciona para outra pagina caso seja bem sucedido
        header("location: painel.php");
    }

?>

<!DOCTYPE html>
<html>
<head>
    <title>Registro Simples</title>
</head>
<body>

<form action="reg2.php" method="post">
  <? include('errors.php') ?>
  Nome:<br>
  <input type="text" name="nome" required>
  <br>
  Data de nascimento:<br>
  <input type="text" name="data_de_nascimento">
  <br>
  Numero de cadastro:<br>
  <input type="text" name="numero_de_cadastro" required>
  <br>
  CEP:<br>
  <input type="text" name="CEP" required>
  <br>
  Numero residencial:<br>
  <input type="text" name="numero" required>
  <br>
  Bairro:<br>
  <input type="text" name="bairro" required>
  <br>
  Endereço:<br>
  <input type="text" name="endereço" required>
  <br>
  Cidade:<br>
  <input type="text" name="cidade" required>
  <br>
  Numero de cadastro:<br>
  <input type="text" name="numero_de_cadastro" required>
  <br>
  Complemento:<br>
  <input type="text" name="complemento" required>
  <br>
  UF:<br>
  <input type="text" name="uf" required>
  <br>
  Telefone Residencial:<br>
  <input type="text" name="telefone_residencial" required>
  <br>
  Telefone Comercial:<br>
  <input type="text" name="telefone_comercial" required>
  <br>
  Categoria de cliente:<br>
  <input type="text" name="categoria_de_cliente" required>
  <br>
  Telefone Celular:<br>
  <input type="text" name="telefone_celular" required>
  <br>
  Telefone 0800:<br>
  <input type="text" name="telefone_0800" required>
  <br>
  CPF:<br>
  <input type="text" name="CPF" required>
  <br>
  Inscrição Estadual:<br>
  <input type="text" name="insc_estadual" required>
  <br>
  CNPJ:<br>
  <input type="text" name="CNPJ" required>
  <br>
  RG:<br>
  <input type="text" name="RG" required>
  <br>
  Inscrição Municipal:<br>
  <input type="text" name="insc_municipal" required>
  <br>
  PIS:<br>
  <input type="text" name="PIS" required>
  <br>
  Site:<br>
  <input type="text" name="site" required>
  <br>
  Email:<br>
  <input type="text" name="email" required>
  <br>
  Historico:<br>
  <input type="text" name="historico" required>
  <br><br>
  <input type="submit" name="register_btn" value="Register">
</form>

</body>
</html>

This solution was only possible thanks to the great help in the comments of the question.

Thank you!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.