Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Caros.
No servidor está este erro:
[11-Nov-2013 04:12:40 America/Los_Angeles] PHP Fatal error: Call to a member function prepare() on a non-object in /home/vieirasa/public_html/CONTROLLER/userDAO.php on line 130
Nesta linha:
$query = $pdo->prepare("
SELECT login,pass FROM autentication
WHERE
login = ?
AND
pass = ?;
");
Contudo no localhost está funcionando perfeitamente, o que poderia ser? A função inteira está abaixo:
public function autentication(User $user)
{
$user->setPass(md5($user->getPass()));
$cn = new Connection();
$pdo = $cn->openConnection();
$query = $pdo->prepare("
SELECT login,pass FROM autentication
WHERE
login = ?
AND
pass = ?;
");
$query -> bindParam(1, $user->getLogin(), PDO::PARAM_STR);
$query -> bindParam(2, $user->getPass(), PDO::PARAM_STR);
$query -> execute();
$result = $query->fetchObject();
if ($result)
{
$response = array
(
'login' => $result->login,
'pass' => $result->pass,
'response' => true
);
return $response;
}
else
{
return false;
}
}
Outro detalhe no servidor tem o postgres 8.1, e minha maquina tem o servidor 9.1, será isso o problema?
Alguém já passou por algum problema parecido?
Agradeço antecipadamente,
Att,
André Vieira.
Use o phpinfo() e veja se o PDO esta habilitado na sua hospedagem.
>
verifique o retorno dessa linha,
$pdo = $cn->openConnection(); de um print_r() em $pdo
print_r($pdo); lembre que na ultima linha de openConnection() deve ter um return.
poste o codigo de openConnection()
outra coisa, se for usar bindParam vc deve obrigatoriamente usar variaveis e não retornos de metodos/funções
uma opção mais simples é trocar bindParam por bindValue() onde retornos podem ser passados.
$query -> bindParam(1, $user->getLogin(), PDO::PARAM_STR);
$query -> bindParam(2, $user->getPass(), PDO::PARAM_STR);
aqui não, outros problemas de versão seriam na hora de restaurar backup, tipos de dados, algumas instruções, etc
Olá shini.
Obrigado pela resposta.
/applications/core/interface/imageproxy/imageproxy.php?img=http://i40.tinypic.com/2hmiut1.png&key=cf9305f4fe037f859073b3b357d7239e880ab7f606dbb20b7839bd979b253064" alt="2hmiut1.png" />
A classe connection é
<pre>
class Connection {
private $pdo;
public function openConnection()
{
$dsn = 'pgsql:host=localhost;port=5432;dbname=gym';
$user = 'postgres';
$pass = '123';
$options = array( PDO::ATTR_PERSISTENT => true,
PDO::ATTR_CASE => PDO::CASE_LOWER);
try
{
$this->pdo = new PDO($dsn, $user, $pass, $options);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $this->pdo;
}
catch(PDOException $e)
{
echo 'Erro: ' . $e->getMessage();
}
}
public function closeConnection()
{
unset($this->pdo);
}
}
</pre>
Use o phpinfo() e veja se o se PDO esta habilitado na sua hospedagem.
Olá Raoni,
Obrigado pela resposta.
Vou verificar, volto depois com o feedback.
Use o phpinfo() e veja se o PDO esta habilitado na sua hospedagem.
Boa, o postgres driver não está habilitado.
Olhá o que eu achei:
PDO drivers sqlite, sqlite2, mysql
Tem como habilitar isso?
Ou é só o admin tem acesso?
Obrigado.
Se você não perceber o driver necessário no phpinfo para ter certeza você pode usar o seguinte:
print_r(PDO::getAvailableDrivers());
Deverá aparecer uma saída parecida com de baixo e deve ter driver para o banco que você esta usando:
Array
(
[0] => mysql
[1] => sqlite
)
Se retornar uma array vazio ou o driver que você precisar não estiver presente então você deve entrar em contato com o suporte da sua hosdapegem e pedir a ativação do mesmo.
verifique o retorno dessa linha,
$pdo = $cn->openConnection();
de um print_r() em $pdo
print_r($pdo);
lembre que na ultima linha de openConnection() deve ter um return.
poste o codigo de openConnection()
outra coisa, se for usar bindParam vc deve obrigatoriamente usar variaveis e não retornos de metodos/funções
uma opção mais simples é trocar bindParam por bindValue() onde retornos podem ser passados.
aqui não, outros problemas de versão seriam na hora de restaurar backup, tipos de dados, algumas instruções, etc