Por gentileza meu UPDATE não altera no banco

Estou usando o método de função

<?php
//Incluindo a conexão com banco de dados
include_once'config.php';

class conecta extends config{ var $pdo;

function __construct(){
$this->pdo = new PDO ('mysql:host='.$this->host.';dbname='.$this->db, $this->usuario, $this->senha);
}

// Funcão Grava nova senha

function setNovaSenha($novasenha, $IdContador){
$stmt = $this->pdo->prepare("UPDATE contador SET PWord = :novasenha WHERE idContador = :IdContador");
$stmt->bindValue(":novasenha", sha1($novasenha));
$stmt->bindValue(":IdContador", $IdContador);
$run = $stmt->execute();
}

Postando corretamente o código…

<?php
//Incluindo a conexão com banco de dados
include_once'config.php';

class conecta extends config{
	var $pdo;

	function __construct(){
		$this->pdo = new PDO ('mysql:host='.$this->host.';dbname='.$this->db, $this->usuario, $this->senha);
	}

	// Funcão Grava nova senha

	function setNovaSenha($novasenha, $IdContador){
		$stmt = $this->pdo->prepare("UPDATE contador SET PWord = :novasenha WHERE idContador = :IdContador");
		$stmt->bindValue(":novasenha", sha1($novasenha));
		$stmt->bindValue(":IdContador", $IdContador);
		$run = $stmt->execute();
	}
}
  1. Verificou se a conexão com o banco está ocorrendo?
  2. Como está a chamada à função setNovaSenha?
  3. É apresentado algum erro?

Olá Iohannes, muito grato pela resposta!

A conexão esta td ok, faço consultas e efetuo login normalmente.
A função setNovaSenha esta assim:

<?php
//Conexao com BD
include_once 'conecta.php';
$conn = new conecta();

$email = $_POST["email"];
$novasenha = $_POST["senha"];
$chave = $_POST["chave"];

//Recebe o campo email e trata os campos
$email = preg_replace ('/[^[:alnum:]_.-@]/','',$email);
$chave = preg_replace ('/[^[:alnum:]]/','',$chave);
$novasenha = addslashes($novasenha);
$result= $conn->checkChave($email, $chave);

//Encontrado um usuario com chave chama função nova senha
if($result){
$alterasenha = $conn->setNovaSenha($novasenha, $result);
echo '

Senha alterada com sucesso!

'; } else { echo '

Erro: Usuario não encontrado

'; } ?>

Eu efetuo a troca da senha e tenho a resposta que foi alterada com sucesso!

Testou para ver se o $result é um id válido? Porque se você tem , por exemplo, 3 registros e passar o id 4, ele vai retornar true, porque a atualização foi realizada, mas não surtiu efeito porque foi sobre um registro inexistente. Para confirmar que isso ocorre, veja:

image

Perceba que eu tenho só 5 registros. Vou tentar atualizar o registro 6 (que não existe):

image

Veja que retorna OK (true), mas informa que nada foi mudado. E de fato:

image

Obrigado Iohannes!

Acabei descobrindo que ai dar sha1 para gravar nova senha, de alguma forma ele nao grava.

$stmt->bindValue(":novasenha", sha1($novasenha));

Agradeço muito pela ajuda