Which correct way to do UPDATE

3

Friends this error ( SQLSTATE[HY093]: Invalid parameter number: parameter was not defined ), what is the correct way to apply UPDATE according to the code below?

DB fields

id_seguradora 
nome_seguradora 
cnpj_seguradora  
tel_seguradora  
cep_seguradora  
rua_seguradora  
numero_seguradora  
bairro_seguradora  
cidade_seguradora  
estado_seguradora  
responsavel_seguradora  
email_seguradora  
quemcadastrou  
quematualizou  
data_hora_cadastro

Code

$nome_seguradora = trim($_POST['nome_seguradora']);
    $cnpj_seguradora = trim($_POST['cnpj_seguradora']);
    $tel_seguradora = trim($_POST['tel_seguradora']);
        $cep_seguradora = trim($_POST['cep_seguradora']);
        $rua_seguradora = trim($_POST['rua_seguradora']);
        $numero_seguradora = trim($_POST['numero_seguradora']);
        $bairro_seguradora = trim($_POST['bairro_seguradora']);
        $cidade_seguradora = trim($_POST['cidade_seguradora']);
        $estado_seguradora = trim($_POST['estado_seguradora']);
    $responsavel_seguradora = trim($_POST['responsavel_seguradora']);
    $email_seguradora = trim($_POST['email_seguradora']);
    $quematualizou = $userRow['nome_funcionario'];
        $data_hora_cadastro = trim($_POST['data_hora_cadastro']);
    $error = FALSE;

    if (!$error) {

            date_default_timezone_set('America/Maceio');
            $datahora = date('Y-m-d H:i:s');

     $sql = "UPDATE 'seguradoras' SET 'nome_seguradora' = :nome_seguradora, 'cnpj_seguradora' = :cnpj_seguradora, 'tel_seguradora' = :tel_seguradora, 'cep_seguradora' = :cep_seguradora, 'rua_seguradora' = :rua_seguradora, 'numero_seguradora' = :numero_seguradora, 'bairro_seguradora' = :bairro_seguradora, 'cidade_seguradora' = :cidade_seguradora, 'estado_seguradora' = :estado_seguradora, 'responsavel_seguradora' = :responsavel_seguradora, 'email_seguradora'        = :email_seguradora, 'quematualizou' = :quematualizou, 'data_hora_cadastro' = '$datahora' WHERE 'id_seguradora' = :id_seguradora ";

      try {
        $stmt = $DB->prepare($sql);

        // bind the values
        $stmt->bindValue(":nome_seguradora", $nome_seguradora);
        $stmt->bindValue(":cnpj_seguradora", $cnpj_seguradora);
        $stmt->bindValue(":tel_seguradora", $tel_seguradora);
                $stmt->bindValue(":cep_seguradora", $cep_seguradora);
                $stmt->bindValue(":rua_seguradora", $rua_seguradora);
                $stmt->bindValue(":numero_seguradora", $numero_seguradora);
                $stmt->bindValue(":bairro_seguradora", $bairro_seguradora);
                $stmt->bindValue(":cidade_seguradora", $cidade_seguradora);
                $stmt->bindValue(":estado_seguradora", $estado_seguradora);
        $stmt->bindValue(":responsavel_seguradora", $responsavel_seguradora);
        $stmt->bindValue(":email_seguradora", $email_seguradora);
        $stmt->bindValue(":quematualizou", $quematualizou);
                $stmt->bindValue(":data_hora_cadastro", $data_hora_cadastro);

        // execute Query
        $stmt->execute();
        $result = $stmt->rowCount();
    
asked by anonymous 14.01.2017 / 15:53

1 answer

5

You passed id_seguradora = :id_seguradora " , but forgot to give bindValue to it:

$nome_seguradora = trim($_POST['nome_seguradora']);
        $cnpj_seguradora = trim($_POST['cnpj_seguradora']);
        $tel_seguradora = trim($_POST['tel_seguradora']);
            $cep_seguradora = trim($_POST['cep_seguradora']);
            $rua_seguradora = trim($_POST['rua_seguradora']);
            $numero_seguradora = trim($_POST['numero_seguradora']);
            $bairro_seguradora = trim($_POST['bairro_seguradora']);
            $cidade_seguradora = trim($_POST['cidade_seguradora']);
            $estado_seguradora = trim($_POST['estado_seguradora']);
        $responsavel_seguradora = trim($_POST['responsavel_seguradora']);
        $email_seguradora = trim($_POST['email_seguradora']);
        $quematualizou = $userRow['nome_funcionario'];
            $data_hora_cadastro = trim($_POST['data_hora_cadastro']);
        $error = FALSE;

        if (!$error) {

                date_default_timezone_set('America/Maceio');
                $datahora = date('Y-m-d H:i:s');

         $sql = "UPDATE 'seguradoras' SET 'nome_seguradora' = :nome_seguradora, 'cnpj_seguradora' = :cnpj_seguradora, 'tel_seguradora' = :tel_seguradora, 'cep_seguradora' = :cep_seguradora, 'rua_seguradora' = :rua_seguradora, 'numero_seguradora' = :numero_seguradora, 'bairro_seguradora' = :bairro_seguradora, 'cidade_seguradora' = :cidade_seguradora, 'estado_seguradora' = :estado_seguradora, 'responsavel_seguradora' = :responsavel_seguradora, 'email_seguradora'        = :email_seguradora, 'quematualizou' = :quematualizou, 'data_hora_cadastro' = :data_hora_cadastro WHERE 'id_seguradora' = :id_seguradora ";

          try {
            $stmt = $DB->prepare($sql);

            // bind the values
            $stmt->bindValue(":nome_seguradora", $nome_seguradora);
            $stmt->bindValue(":cnpj_seguradora", $cnpj_seguradora);
            $stmt->bindValue(":tel_seguradora", $tel_seguradora);
                    $stmt->bindValue(":cep_seguradora", $cep_seguradora);
                    $stmt->bindValue(":rua_seguradora", $rua_seguradora);
                    $stmt->bindValue(":numero_seguradora", $numero_seguradora);
                    $stmt->bindValue(":bairro_seguradora", $bairro_seguradora);
                    $stmt->bindValue(":cidade_seguradora", $cidade_seguradora);
                    $stmt->bindValue(":estado_seguradora", $estado_seguradora);
            $stmt->bindValue(":responsavel_seguradora", $responsavel_seguradora);
            $stmt->bindValue(":email_seguradora", $email_seguradora);
            $stmt->bindValue(":quematualizou", $quematualizou);
                    $stmt->bindValue(":data_hora_cadastro", $data_hora_cadastro);
            $stmt->bindValue(":id_seguradora ", $id);

            // execute Query
            $stmt->execute();
            $result = $stmt->rowCount();

This is a very common error, so always remember to check if you have passed all the parameters entered in the query.

Something like:

  $stmt->bindValue(":id_seguradora ", $id);

I just put id, because I do not know how you are storing the id, which you want to update.

Edit

You missed this line of sql as well

data_hora_cadastro = '$datahora'

You passed the direct variable, and it passed the bind.

It should look like this

'data_hora_cadastro' = :data_hora_cadastro
    
14.01.2017 / 16:46