Erro PDO: Query certa mais o resultado não vem
Olá pessoal, estou tendo um problema que nunca passei e não acho solução mesmo depois de procurar no google. Eu criei um class com um método find() que dependendo do parâmetro vai chamar o fetch ou o fetchAll do PDO. Segue a class:
<?php
class Conexao extends PDO {
public $pool;
public $conn;
public function __construct($pool, $dsn, $user, $pass){
$this->pool = $pool;
try {
$db_conn = parent::__construct($dsn, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
//parent::setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
//parent::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//parent::setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
$this->conn = $db_conn;
return $this->conn;
} catch (PDOException $e){
}
}
public function find($tipo, $sql_prepare, $params = array()){
if (strtolower($tipo) == 'all'){
try {
$qr = $this->prepare($sql_prepare);
if (!empty($params)){
foreach($params as $coluna => $valor){
$qr->bindParam($coluna, $valor);
}
}
$qr->execute();
return $qr->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e){
return false;
}
} elseif (strtolower($tipo) == 'first'){
try {
$qr = $this->prepare($sql_prepare);
if (!empty($params)){
foreach($params as $coluna => $valor){
$qr->bindParam($coluna, $valor);
}
}
$qr->execute();
return $qr->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e){
return false;
}
}
}
public function querySql($sql_prepare, $params = array()){
try {
$qr = $this->prepare($sql_prepare);
return $qr->execute($params);
} catch (PDOException $e) {
return false;
}
}
}
?>
Em meu banco de dados Mysql tenho uma tabela com os campos
id_usuario int(11)
hash_recuperar_senha varchar(50)
Só que quando passo o seguinte código não vem nenhum resultado.
$hash_recuperar_senha = $_GET['hash'];
$id_usuario = $_GET['id'];
$params_hash_id = array(
':hash_recuperar_senha' => $hash_recuperar_senha,
':id_usuario' => $id_usuario
);
$sql_hash_id = "SELECT id_usuario FROM usuarios WHERE id_usuario = :id_usuario AND hash_recuperar_senha = :hash_recuperar_senha";
$rs_hash_id = $db->find('first', $sql_hash_id, $params_hash_id);
$rs_hash_id retorna false. O estranho é que se eu fizer assim retorna o registro normalmente:
$hash_recuperar_senha = $_GET['hash'];
$id_usuario = $_GET['id'];
$params_hash_id = array(
':hash_recuperar_senha' => $hash_recuperar_senha
);
$sql_hash_id = "SELECT id_usuario FROM usuarios WHERE hash_recuperar_senha = :hash_recuperar_senha";
$rs_hash_id = $db->find('first', $sql_hash_id, $params_hash_id);
Assim também retorna normal:
$hash_recuperar_senha = $_GET['hash'];
$id_usuario = $_GET['id'];
$params_hash_id = array(
':id_usuario' => $id_usuario
);
$sql_hash_id = "SELECT id_usuario FROM usuarios WHERE id_usuario = :id_usuario";
$rs_hash_id = $db->find('first', $sql_hash_id, $params_hash_id);
Onde estou errando?
Discussão (1)
Carregando comentários...