Ir para conteúdo

Arquivado

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

pedrovisk

UPDATE com PDO

Recommended Posts

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

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
$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

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

×

Informação importante

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