Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
seguinte pessoal, utilizo uma classe criada por mim para gerar meus sites, vai uma parte do codigo dela:
<?php
class Site
{
public $descricao = '';
public $titulo = '';
public $link;
public $paginas = array();
public $host;
public $usuario;
public $senha;
public $nomebanco;
private $conexao = null;
private $include = '';
private $conteudo = '';
private $get = array();
private $hash_sessao = '';
//conexao PDO
private function pdo()
{
try {
$this->conexao = new PDO("mysql:host=".$this->host."; dbname=".$this->nomebanco, $this->usuario, $this->senha);
}
catch (PDOException $e){
echo "Erro: ".$e;
exit;
}
}
private function topo($conexao)
{
include 'includes/topo.php';
}
private function rodape()
{
include 'includes/rodape.php';
}
public function layout()
{
foreach($this->paginas as $indice=>$pagina)
{
if($indice == $this->get[0])
{
$this->include = 'includes/'.$pagina;
}
}
if($this->include=='')
$this->include = 'includes/inc_home.php';
include $this->include;
}
function __construct()
{
session_start();
}
}na index é incluída essa classe e instanciado o oobjeto, depois passo algumas informações como para a conexao e chamo o metodo layout.
ele includa um arquivo de acordo com o valor que passo no começo ... caso seja www.url.com.br/home, sera o arquivo inc_home.php
dentro desse arquivo tenho la todo o script html, js, e o proprio php que vai gerar o que for necessário para a pagina....
no caso o arquivo includado o aspecto:
<?php
$this->titulo = '';
$this->descricao = '';
$this->pdo();
$this->topo($this->conexao);
?>
qualquer coisa html
<?php
$busca = $this->conexao->query('SELECT * FROM site');
$dados = $busca->fetchALL();
print_r($dados);
$this->rodape();
como vcs viram tenho a conexao PDO sendo executada em um metodo (de nome pdo) que retorna o objeto gerado para a propriedade $conexao.
uso ela normalmente nos arquivos includados como $this->conexao ...enfim ...
o problema que em um servidor tenho tido taxa de falhas quando executo uma busca, seja usando os metodos prepare e execute, ou o query somete..
Fatal error: Call to a member function fetch() on a non-object in includes/inc_home.php on line 53
o codigo dessa parte que gera o erro é :
//busca das entrevistas
$busca = $this->conexao->query('SELECT * FROM entrevistas');
$dados3 = $busca->fetch();
//busca das artigos
$busca = $this->conexao->query('SELECT * FROM artigos');
*** linha 53 *** $dados4 = $busca->fetch();
//busca das estados
$busca = $this->conexao->query('SELECT id,nome FROM estados');
$dados5 = $busca->fetchALL();o fato de usar um objeto instanciado dentro de outro traz problemas ? Estendendo a classe em questao, ela traz alguma desvatangem ? Ta errada ? enfim....
Carregando comentários...