pedrovisk 1 Denunciar post Postado Novembro 10, 2013 Galera, Estou realizando uma simples atualização em uma tabela com PHP e Mysql, mas não consigo por está gerando essa mensagem de erro: ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in /Library/WebServer/Documents/gc/PreCadastro/Atualizar_Prospect_Processar.php on line 16 ( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /Library/WebServer/Documents/gc/PreCadastro/Atualizar_Prospect_Processar.php on line 16 Segue o código da página Atualizar_Prospect_Processar.php <?php include"../configuracao/pdo.php"; $IDCliente = addslashes($_POST['IDCliente']); $eMail = addslashes(trim($_POST['eMail'])); $Nome_Fantasia = addslashes(trim($_POST['Nome_Fantasia'])); var_dump($IDCliente); var_dump($eMail); var_dump($Nome_Fantasia); $pdo = conectar(); $atualizar = $pdo->prepare("UPDATE `precadastro` SET Nome_Fantasia = :Nome_Fantasia, eMail = :eMail WHERE :IDCliente"); $atualizar ->bindValue(":Nome_Fantasia", $Nome_Fantasia); $atualizar ->bindValue(":eMail", $eMail); $atualizar ->execute(); ---------------AQUI É A LINHA 16, conforme mensagem de erro. echo "Cadastro concluído com sucesso!"; ?> Aqui está a conexão function conectar() { define('HOST','localhost'); define('USER','root'); define('PASS','123'); try { $con = new PDO("mysql:host=".HOST.";dbname=GC",USER,PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo "Erro encontrado ".$e->getMessage(). " com o código ".$e->getCode(); } return $con; } Resultado do var_dump(); string '11' (length=2) string 'ma@pedroct.com.br' (length=17) string 'Maria Amorim' (length=12) Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Novembro 10, 2013 Falta informar o IDCliente. :IDCliente no bindValue Compartilhar este post Link para o post Compartilhar em outros sites
pedrovisk 1 Denunciar post Postado Novembro 10, 2013 Paulo, Eu já havia colocado e mesmo assim continua esse problema. Só consegui quando sai do PDO, conforme abaixo: setlocale(LC_CTYPE,pt_BR); $con = @mysql_connect("localhost", "root", "123")or die("cannot connect"); @mysql_set_charset('utf8', $con); @mysql_select_db("GC", $con)or die("cannot select DB"); // update data in mysql database $sql="UPDATE precadastro SET Nome_Fantasia = '$Nome_Fantasia', eMail = '$eMail' WHERE ID = '$IDCliente'"; $result = mysql_query($sql); if($result){ echo "Cadastro concluído com sucesso!"; } else { echo "Não foi possível cadastrar!"; } mysql_close(); Eu gostaria de continua com o PDO. Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Novembro 10, 2013 $conn = new PDO("mysql:host=localhost; dbname=banco_de_dados;", "root", "", array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ) ); $con = new PDO("mysql:host=".HOST.";dbname=GC",USER,PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); o seu está errado. recomendo criar um arquivo só com as constrantes define(); e incluir acima na conexão ou colocar a conexão abaixo e não dentro da função. e fazer a conexão como acima informado. Este post solucionou a sua dúvida, peço que coloque como resolvido e me der um ponto positivo de reputação para que eu possa continuar ajudando outros colegas como você. Caso não solucione o seu problema, peço que coloque a sua dúvida abaixo. Att: João Paulo Sousa Supriano Compartilhar este post Link para o post Compartilhar em outros sites
cleimarlemes 0 Denunciar post Postado Junho 16, 2017 bom dia.. estou com um erro parecido com esse. Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in /home/u870495724/public_html/action_foto.php:122 Stack trace: #0 /home/u870495724/public_html/action_foto.php(122): PDOStatement->execute() #1 {main} thrown in /home/u870495724/public_html/action_foto.php on line 122 se eu ignoro esta linha: $retorno = $stm->execute(); // ele retorna com erro ao editar registro $sql = 'UPDATE tb_entrada SET matricula=:matricula, tipo=:tipo, situacao=:situacao, nome=:nome, identidade=:identidade, placa=:placa, veiculo=:veiculo, cidade=:cidade, uf=:uf, empresa=:empresa, foto=:foto, dataentrada=:dataentrada, horaentrada=:horaentrada, horasaida=:horasaida'; $sql .= 'WHERE id = :id'; $stm = $conexao->prepare($sql); $stm->bindValue(':matricula', $matricula); $stm->bindValue(':tipo', $tipo); $stm->bindValue(':situacao', $situacao); $stm->bindValue(':nome', $nome); $stm->bindValue(':identidade', $identidade); $stm->bindValue(':placa', $placa); $stm->bindValue(':veiculo', $veiculo); $stm->bindValue(':cidade', $cidade); $stm->bindValue(':uf', $uf); $stm->bindValue(':empresa', $empresa); $stm->bindValue(':dataentrada', $dataentrada); $stm->bindValue(':horaentrada', $horaentrada); $stm->bindValue(':horasaida', $data); $stm->bindValue(':foto', $nome_foto); $stm->bindValue(':id', $id); $retorno = $stm->execute(); Compartilhar este post Link para o post Compartilhar em outros sites