Which correct way to update

Asked

Viewed 191 times

3

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

Campos DB

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();
  • there must be something wrong with the parameter data_hora_cadastro... Check out everything sertim....

  • I put it like this: data_hora_cadastro = :data_hora_cadastre, look at the error: SQLSTATE[HY093]: Invalid Parameter number: number of bound variables does not match number of tokens

1 answer

5


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

$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, always remember to check if you passed all parameters reported in the query.

There was something missing:

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

I put only id, because I don’t know how Voce is storing the id, which you want to update.

Edit

You got this sql line wrong too

data_hora_cadastro = '$datahora'

You passed the direct variable, being that you passed it in the bind.

Should stay like this

`data_hora_cadastro` = :data_hora_cadastro
  • This error has appeared: SQLSTATE[HY093]: Invalid Parameter number: number of bound variables does not match number of tokens

  • @Maurosantos Voce put the correct id you want to update?

  • Yes I put...

  • I’ll check here

  • @Maurosantos edited, look now

  • SQLSTATE[HY093]: Invalid Parameter number: Parameter was not defined

Show 2 more comments

Browser other questions tagged

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