Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ammorei

Warning: PDOStatement::execute(): SQLSTATE[HY093]

Recommended Posts

Boa Noite!

Estou montando um CRUD, peguei alguns códigos na Internet e adaptei para a minha necessidade, tudo estava correndo perfeitamente bem, mas quando cheguei na parte de UPDATE a aplicação me apresenta o seguinte erro: Warning: PDOStatement::execute(): SQLSTATE[HY093].

Gostaria da ajuda de vocês para resolver meu problema.

Segue Código:

<?php

  $id=isset($_GET['id']) ? $_GET['id'] : die('ERROR: ID não encontrado.');
 
  include 'config/database.php';
 
     if($_POST){
     
         try{
     
         $query = "UPDATE alunos SET nome=:nome, responsavel=:responsavel, telefone=:telefone, ensino=:ensino, serie=:serie, visita=:visita, entrevista=:entrevista, teste_data=:teste_data, teste_result=:teste_result, matricula=:matricula, data_matricula=:data_matricula, observacao=:observacao WHERE id = :id";
 
         $stmt = $con->prepare($query);
             
         $nome=htmlspecialchars(strip_tags($_POST['nome']));
         $responsavel=htmlspecialchars(strip_tags($_POST['responsavel']));
         $telefone=htmlspecialchars(strip_tags($_POST['telefone']));
         $ensino=htmlspecialchars(strip_tags($_POST['ensino']));
         $serie=htmlspecialchars(strip_tags($_POST['serie']));
         $visita=htmlspecialchars(strip_tags($_POST['visita']));
         $entrevista=htmlspecialchars(strip_tags($_POST['entrevista']));
         $teste_data=htmlspecialchars(strip_tags($_POST['teste_data']));
         $teste_result=htmlspecialchars(strip_tags($_POST['teste_result']));
         $matricula=htmlspecialchars(strip_tags($_POST['matricula']));
         $data_matricula=htmlspecialchars(strip_tags($_POST['data_matricula']));
         $observacao=htmlspecialchars(strip_tags($_POST['observacao']));

         $visita=date("Y-m-d",strtotime(str_replace('/','-',$visita)));
         $entrevista=date("Y-m-d",strtotime(str_replace('/','-',$entrevista)));
         $teste_data=date("Y-m-d",strtotime(str_replace('/','-',$teste_data)));
         $data_matricula=date("Y-m-d",strtotime(str_replace('/','-',$matricula)));    

         $stmt->bindParam(':nome', $nome);
         $stmt->bindParam(':responsavel', $responsavel);
         $stmt->bindParam(':telefone', $telefone);
         $stmt->bindParam(':ensino', $ensino);
         $stmt->bindParam(':serie', $serie);
         $stmt->bindParam(':visita', $visita);
         $stmt->bindParam(':entrevista', $entrevista);
         $stmt->bindParam(':teste_data', $teste_data);
         $stmt->bindParam(':teste_result', $teste_result);
         $stmt->bindParam(':matricula', $matricula);
         $stmt->bindParam(':data_matricula', $data_matricula);
         $stmt->bindParam(':observacao', $observacao);
       
         if($stmt->execute()){
             echo "<div class='alert alert-success'>Atualização realizado com sucesso.</div>";
            }else{
             echo "<div class='alert alert-danger'>Não foi possível atualizar o registro. Por favor, tente novamente.</div>";
            }
         
            }
     

     catch(PDOException $exception){
         die('ERROR: ' . $exception->getMessage());
     }
     }
?>

Desde já agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peguei o código e fui adaptando a minha necessidade.

Pelo que eu entendi do código, esse parâmetro serve para atualizar apenas um registro baseado no id. Não é isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa... Agora entendi seu comentário...

$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':responsavel', $responsavel);
$stmt->bindParam(':telefone', $telefone);
$stmt->bindParam(':ensino', $ensino);
$stmt->bindParam(':serie', $serie);
$stmt->bindParam(':visita', $visita);
$stmt->bindParam(':entrevista', $entrevista);
$stmt->bindParam(':teste_data', $teste_data);
$stmt->bindParam(':teste_result', $teste_result);
$stmt->bindParam(':matricula', $matricula);
$stmt->bindParam(':data_matricula', $data_matricula);
$stmt->bindParam(':observacao', $observacao);
$stmt->bindParam(':id', $id);

Adicionei o parâmetro ao final:

$stmt->bindParam(':id', $id);

Funcionou perfeitamente, está dando problema só na data agora... Muito Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por manogaucho
      Tudo bem!!!
      Estou com esse erro “ht exception ‘PDOException’ with message ‘SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens’”
      Ja conferir não acho nome diferentes para acusar esse erro…
      codigo abaixo:
       
      action_cliente.php
      $sql = 'UPDATE tab_clientes2 SET codigoean:codigoean , descricao_completa:descricao_completa, products_count_admin:products_count_admin '; $sql .= ‘WHERE id = :id’; $stm = $conexao->prepare($sql); $stm->bindValue(':codigoean', $codigoean); $stm->bindValue(':descricao_completa', $descricao_completa); $stm->bindValue(':products_count_admin', $products_count_admin); $stm->bindValue(':id', $id); $retorno = $stm->execute(); if ($retorno): echo "<div class='alert alert-success' role='alert'>Registro editado com sucesso, aguarde você está sendo redirecionado ...</div> "; else: echo "<div class='alert alert-danger' role='alert'>Erro ao editar registro!</div> "; endif; echo "<meta http-equiv=refresh content='3;URL=index.php'>"; endif; Tabela
      CREATE TABLE `tab_clientes2` ( `id` int(11) NOT NULL, `codigoean` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `descricao_completa` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `products_count_admin` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; COMMIT;  
    • Por Fábio BN
      Oi Pessoal, estou tentando fazer um Select usando PDO e sempre dá um erro:

      Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/dominio/public_html/pagina_codigox.php on line 25
      A linha 25 é:
      $var_icone->execute();

      Código:
      $codigo_comprador = 123456; $var_icone=$pdo->prepare("select * from loja_temporaria where codigo_user=:$codigo_comprador order by cod_temp desc"); $var_icone->bindValue(":codigo_user",$codigo_comprador); $var_icone->execute(); Fiquei cerca de 3 horas tentando resolver isso e não consegui. Sempre da erro no ( $var_icone->execute(); )
       
      Se alguém puder ajudar.
       
      Obrigado!.
    • Por josenilson
      Boa tarde para todos !
       
      estou tentando criar um formulário de login e senha com utilizando HTML, PHP, E PDO
      ate o momento estou em um impasse tenho o formulário em HTML ok tenho uma pagina chamada conexão em php OK
      e tenho uma outra pagina chamado logar.php onde basicamente esta pagina faz a verificação de tudo os valores digitados no form HTMl
      nesta também já tem um include "conexão.php"
       
      mas quando eu rodo essa programação acontece o seguinte erro na pagina logar.php.
       
      PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\xampp\htdocs\WEB\logar.php:20 Stack trace: #0 C:\xampp\htdocs\WEB\logar.php(20): PDOStatement->execute() #1 {main}
       
      segue abaixo o código da pagina.
       
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

      <?php
      include "conexao.php";



      if (isset($_POST['logar'])){

      $login = trim(strip_tags($_POST['login']));
      $senha = trim(strip_tags($_POST['senha']));

      //SELECIONA O BANCO DE DADOS
      $select = "SELECT * FROM sistema WHARE usuario=:usuario AND senha:=senha";

      try {
      $result = $conexao->prepare($select);
      $result->bindParam(':usuario', $usuario, PDO::PARAM_STR);
      $result->bindParam(':senha',$senha, PDO::PARAM_STR);

      $result->execute(); nesta parte que vem o erro SQLSTATE[HY093]:
      $contar = $result->rowCount();
      if ($contar>0){
      $usuario = $_POST['login'];
      $senha = $_POST['senha'];
      $_SESSION['usuario'] = $usuario;
      $_SESSION['senha'] = $senha;

      echo 'logado com sucesso';

      header ("refresh: 5 desktop.php");

      }else{
      echo 'os dados digitados estão incorretos';
      }

      } catch(PDOException $e) {
      echo $e;

      }


      }



      ?>
       
      Não estou conseguindo resolver esta parte do erro pois sou iniciante em programação e peço e sua ajuda
      ao postar se possível peço por gentileza que mostre o resultado já inserido no código para maior entendimento do resultado agradeço.
       
      att; josenilson pereira
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.