Insertion in Mysql via PHP foreign key

Asked

Viewed 208 times

0

I am creating a PHP and mysql application to manage people outside my company.

inserir a descrição da imagem aqui

The logic is this already inserted the Companies that I will associate to each entity People but when trying to insert in the bank via php there is no answer nor in Exception. (via mysql is good).

follows part of the code:

<?php

$erro = null;
$valido = false;

if(isset($_REQUEST["validar"]) && $_REQUEST["validar"] == true)
{
    if(strlen(utf8_decode($_POST["nome"])) < 4)
    {
        $erro = "Preencha o campo nome corretamente (4 ou mais caracteres)";
    }
    else if(strlen(utf8_decode($_POST["apelido"])) < 3)
    {
        $erro = "Preencha corretamente o apelido ";
    }
    else if(is_numeric($_POST["nifPessoa"]) == false)
    {
        $erro = "Campo nif deve ser numérico e conter 9 digitos";  
    }
    else if ($_POST["sexo"] != "M" && $_POST["sexo"] != "F")
    {
        $erro = "Preencha o campo sexo corretamente. ";
    }

    else if (verificaData($_POST["dataNascimento"]) == false  )
    {
        $erro = "Formato da data invalido";

    }

   /* else if (strlen(utf8_decode($_POST["nacionalidade"])) < 5)
    {

        para já não vou verificar a nacionalidade

    }

    */




    else
    {
        $valido = true;


        try
        {


            $connection = new PDO("mysql:host=localhost;dbname=sifo5","root","root");      
              // Caso der certo o bloco catch() nao arranca

              $connection->exec("set names utf8");


        }

        catch(PDOException $e)
        {
            echo "Falha: ".$e->getMessage();
            exit();
        }

        $sql = "INSERT INTO Pessoas
        (nome,apelido,nifPessoa,sexo,dataNascimento,nascionalidade,Empresas_idEmpresas)
        values(?,?,?,?,?,?,?)";



        $stmt = $connection->prepare($sql); // Prepara a conecção

        $stmt->bindParam(1,$_POST["nome"]);
        $stmt->bindParam(2,$_POST["apelido"]);
        $stmt->bindParam(3,$_POST["nifPessoa"]);
        $stmt->bindParam(4,$_POST["sexo"]);
        $stmt->bindParam(5,$_POST["dataNascimento"]);
        $stmt->bindParam(6,$_POST["nascionalidade"]);
        $stmt->bindParam(7,$_POST["Empresas_idEmpresas"]);

        $stmt->execute();



        if($stmt->errorCode() != "00000")
        {
          $valido=false;
          $erro= "Erro codigo ".$stmt->errorCode().":  ";
          $erro.= implode(", ", $stmt->errorInfo());

        }

    }
}



?>
<HTML>
    <HEAD>
        <TITLE>Formulário para Registo Pessoas</TITLE>
    </HEAD>
    <BODY>
        <?php

            if($valido == true)
            {
                echo "Pessoa criada com sucesso! ";

            }
            else
            {

                if(isset($erro))
                {
                    echo $erro . "<BR><BR>";
                }

        ?>

        <FORM method=POST action="?validar=true">
            Nome da Pessoa:
            <BR>
            <INPUT type=TEXT name=nome
            <?php if(isset($_POST["nome"])) { echo "value='" . $_POST["nome"] . "'"; } ?>
            ><BR>

            Apelido:
            <BR>
            <INPUT type=TEXT name=apelido
            <?php if(isset($_POST["apelido"])) { echo "value='" . $_POST["apelido"] . "'"; } ?>
            ><BR>

            NIF da Pessoa:
            <BR>
            <INPUT type=TEXT name=nifPessoa
            <?php if(isset($_POST["nifPessoa"])) { echo "value='" . $_POST["nifPessoa"] . "'"; } ?>
             ><BR>     <BR>

             Sexo:
            <INPUT type=RADIO name=sexo value="M"
            <?php if(isset($_POST["sexo"]) && $_POST["sexo"] == "M") { echo "checked"; } ?>
            >Masculino

            <INPUT type=RADIO name=sexo value="F"
            <?php if(isset($_POST["sexo"]) && $_POST["sexo"] == "F") { echo "checked"; } ?>
            >Feminino
            <BR> 

          Data de Nascimento:

          <input type= text name=dataNascimento  >
          <BR>


          Nacionalidade:

          <select name="nascionalidade">
  <option value="">-- select one --</option>

</select>

            Empresa externa a que pertence:

            <input type=text name=Empresas_idEmpresas value =1 > (tentei inserir logo numa empresa como teste)


              <INPUT type=SUBMIT value="Enviar">



        </FORM>
        <?php
            }
        ?>


    </BODY>
</HTML>
  • Thanks for the edition!

  • 1

    How do I close the question ? I have already solved the problem.

1 answer

0

Just one note. To make sure you handle connection errors, add the line $conn->setAttribute(), as follows. The default PDO error is PDO::ERRMODE_SILENT. Switch to PDO::ERRMODE_EXCEPTION to enable error display.:

$try {
    con = new PDO("mysql:host=localhost;dbname=nome_banco", "root", "senha");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $query = 'INSERT INTO users (email,senha) VALUES ('.$email.','.$senha.')';
    $stmt = $conn->prepare($query);
    $stmt->execute();
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

Below I will list the options you will have:

  • PDO::ERRMODE_SILENT
  • PDO::ERRMODE_WARNING
  • PDO::ERRMODE_EXCEPTION

Browser other questions tagged

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