Estou com um erro que não consigo identificar de jeito nenhum. Preciso realizar mais de uma consulta em classes diferentes em uma tela. O Meu problema está acontecendo quando a segunda consulta é executada, pois o e o Php retorna,Call to a member function prepare() on nullpor que o parâmetro de conexão que está em __construct está retornando null na segunda classe (peguei isso através de um var_dump) por isso que o "prepare" e consequentemente a consulta não funcionam.
Queria saber o que estou fazendo de errado para não consegui consultar mais de uma classe na mesma tela. Estou usando PDO e banco mysql.
Essa é a minha classe de conexão
<?php
// Classe que realiza a conexão com o banco de dadosClassConexao{privatestatic $con;// Impede que a classe seja instanciadaprivatefunction __construct(){}// Impede que a classe seja clonadaprivatefunction __clone(){}//Impede a utilização do Unserialize (que a variavel retorne o array original)privatefunction __wakeup(){}publicstaticfunction getConexao(){if(!isset(self::$con)){try{// parametros de conexão
$tipo ='mysql:host=localhost;dbname=teste';
$user ='root';
$senha ='';self::$con =new PDO( $tipo, $user, $senha, array(PDO::MYSQL_ATTR_INIT_COMMAND =>"SET NAMES utf8", PDO::ATTR_PERSISTENT => TRUE));self::$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);self::$con->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);}catch(PDOException $erro ){
echo $erro;// Encerrando a aplicaçãoexit();}returnself::$con;}}// finalizando o getConexao protectedfunction closeConexao(){if($this->con !=null) $this->con =null;}publicfunction __destruct(){
$this->closeConexao();}}// finalizando a classe conexão?>
Essa é a classe na qual realizo a 1º consulta
<?php
// ARQUIVO DE CLASSE SLIDE_CRUD - UTILIZADA PARA ADICIONAR AS IMAGENS E CONSULTAS ATRAVÉS DO LOGIN NO PAINEL-ADMIN// chamando o arquivo de conexãoclassSlide_crudextendsSlide{publicstatic $conexaoPDO;// Instanciando a conexao e a classepublicfunction __construct(){
$this->conexaopdo = conexao::getConexao();}//******************************************************************************************************////*********************************************CONSULTA GERAL******************************************////****************************************************************************************************// publicfunction consultaslide(){try{// realizando o SQL
$sql =('SELECT * FROM tbl_slide');// Realizando a conexão
$prepare_sql = $this->conexaopdo->prepare($sql);
$prepare_sql->execute();return $prepare_sql->fetchAll(PDO::FETCH_OBJ);}catch(exception $e){
echo" $e erro ao realizar a consulta, se o problema persistir contate o administrador do sistema";}}}
Essa é a classe na qual realizo a 2º consulta.
<?php
// Criando a Classe Seo_Crud - Classe responsável pelas interações com o banco de DADOSClassSeo_crudextendsSeo{// parametro na qual será responsável por iniciar a conexão com o banco de dadosstatic $conexaoPDO;// função responsável por instanciar a classe em questãopublicfunction __construct(){// instanciando o parametro de conexão;
$this->conexaopdo =Conexao::getConexao();}//******************************************************************************************************////********************************************CONSULTA GERAL*******************************************////****************************************************************************************************//publicfunction consultaseo(){try{// consulta SQL
$sql =('SELECT * FROM tbl_seo');// repassando a consulta para a conexão
$prepare_sql = $this->conexaopdo->prepare($sql);// executando a instrução
$prepare_sql->execute();// retorno da funçãoreturn $prepare_sql->fetchAll(PDO::FETCH_OBJ);}catch(PDOexception $e){
print_r($e);
echo"$e Atenção! Ocorreu um Erro ao realizar essa consulta de dados, tente novamente, se o problema persisitir contate o Administrador do Sistema";}}// fim function consulta}?>
aqui está os trechos na qual estou instanciando as classes no arquivo index.php para obter os dados através de um foreach.
<?php
// instanciando a classe responsável pelo Crud e pelas Consultas
$slide_crud =newSlide_crud();// repassando os parâmetros para a consulta e armazenando na variavel $result
$result = $slide_crud->consultaslide();// percorrendo o array através de um laço para exibir as imagensforeach($result as $dados){?>
<div class="cycle-anterior" <ahref="#"id="anterior"></a></div>
<div class="cycle-proximo" <ahref="#"id="proximo"></a></div>
<img src="<?=$dados->caminho ?>" class="img-thumbnail" height="260" width="960" data-cycle-desc= <?=$dados->descricao?>>
<?php
}<?php
// instanciando a classe responsável pela consulta;
$seo_crud =newSeo_crud();// realizando a consulta e armazenando os dados em uma variavel
$result_seo = $seo_crud->consultaseo();if(!Empty($result_seo)){foreach($result_seo as $dados){
echo "$dados->rodape_centro";}}?>
Editado por didonsom problema resolvido, alterando o assunto
Pergunta
didonsom
Olá Pessoal Boa tarde!
Estou com um erro que não consigo identificar de jeito nenhum. Preciso realizar mais de uma consulta em classes diferentes em uma tela. O Meu problema está acontecendo quando a segunda consulta é executada, pois o e o Php retorna, Call to a member function prepare() on null por que o parâmetro de conexão que está em __construct está retornando null na segunda classe (peguei isso através de um var_dump) por isso que o "prepare" e consequentemente a consulta não funcionam.
Queria saber o que estou fazendo de errado para não consegui consultar mais de uma classe na mesma tela. Estou usando PDO e banco mysql.
Essa é a minha classe de conexão
Essa é a classe na qual realizo a 1º consulta
Essa é a classe na qual realizo a 2º consulta.
aqui está os trechos na qual estou instanciando as classes no arquivo index.php para obter os dados através de um foreach.
problema resolvido, alterando o assunto
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.