Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 487381
            [titulo] => Problema com PDO e pg_query
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-07-30 15:24:01
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 269142
            [status] => A
            [isExample] => 
            [NomeUsuario] => William 
            [Apelido] => William (Devwilliam)
            [Foto] => 269142_20150809195205.jpg
            [Conteudo] => Adenes eu acho  que vc tá  confundindo as coisas no seu código,  você tá misturando as extensão pg() com PDO, são extensões diferentes ....

Com PDO seria assim:
[code]
$sql = "SELECT * FROM usuarios WHERE email = '$usuario'";
$stm = $pdo->prepare($sql);
$stm->execute();
$resultado = $stm->fetchAll(PDO::FETCH_OBJ); // Aqui tem várias maneiras de retorno, eu prefiro em forma de array de objetos
[/code] ) )

Problema com PDO e pg_query

PHP
Adenesjr
   - 30 jul 2014

Fiz a classs AcessarBase e a classe usuarios. Na classe AcessarBase possui um método static que é chamado por um objeto da classe usuarios pelo método logaUsuario($usuario, $senha); Quando faço a chamada ao método statusConexao($host, $porta, $usuario, $senha, $dbname) pelo método logaUsuario($usuario, $senha) da classe Usuarios o retorno é positivo, conexão aceita, porém dar o seguinte erro:
Warning: pg_query(): No PostgreSQL link opened yet in C:\wamp\www\teste\src\lib\usuario.class.php on line 115
Warning: pg_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\teste\src\lib\usuario.class.php on line 117
LInha 115: $query = pg_query($sql);
Linha 117: $resultado = pg_fetch_assoc($query);
Não permitindo continuar....
Se altero a assinatura do método statusConexao($host, $porta, $usuario, $senha, $dbname) para:
$dtb = @pg_connect("host=$host port=$porta dbname=$dbname user=$usuario password=$senha");
return (!$dtb) ? false : true;
Funciona corretamente, sem problema nenhum. Então onde está o problema?
#Código
#classe AcessarBase
class AcessarBase{
static function statusConexao($host, $porta, $usuario, $senha, $dbname){
try{
return $conexao = new \PDO("pgsql:host=$host port=$porta dbname=$dbname user=$usuario password=$senha");
} catch(\PDOException $e){
return $error = "Não foi possível fazer a conexão com o banco de dados. Erro codigo: ".$e -> getCode()." Mesagem: ".$e -> getMessage();
}
}
}
#classe usuarios
class Usuarios{
function logaUsuario($usuario, $senha) {
if (AcessarBase::statusConexao(HOST, PORTA, USUARIO, SENHA, BASE)){
// Inicia a sessão
session_start("teste");
$_SESSION['logado'] = "teste-sim";
$_SESSION['usuario'] = $usuario;
// Consulta os dados
$sql = "SELECT *
FROM usuarios
WHERE email = '$usuario'";
$query = pg_query($sql);
$resultado = pg_fetch_assoc($query);
} else {
$this->erro = "Não foi possível conectar ao banco de dados. Se isso ocorrer novamente entre em contato com o suporte tecnico.";
return false;
}
}

Post mais votado

William (devwilliam)
   - 30 jul 2014

Adenes eu acho que vc tá confundindo as coisas no seu código, você tá misturando as extensão pg() com PDO, são extensões diferentes ....

Com PDO seria assim:
#Código
$sql = "SELECT * FROM usuarios WHERE email = '$usuario'";
$stm = $pdo->prepare($sql);
$stm->execute();
$resultado = $stm->fetchAll(PDO::FETCH_OBJ); // Aqui tem várias maneiras de retorno, eu prefiro em forma de array de objetos