Por favor, me ajudem com esse erro: Fatal error: Call to a member function prepare() on null in C:\xampp\htdocs\conexao.php on line 14

28/12/2015

0

PHP

<?php class BD{
	 public static $conn;
	 public function __construct(){}
	 
	 public function conn(){
		if(is_null(self::$conn)){
			self::$conn = new PDO('mysql:host=localhost;dbname=cadastro','root','');
			self::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		}		 
		
		return (self::$conn) ? self::$conn : false; 
	}	
}
$inserir = BD::$conn->prepare("UPDATE clientes set nome = 'Jonas' WHERE id=1");
$inserir->execute();

Wesley Jonas

Wesley Jonas

Responder

Post mais votado

29/12/2015

Welsey tem 2 problemas no seu código:

1 - Atributos estáticos só podem ser acessados por métodos estáticos, o atributo estático $conn está sendo acessado pelo método não estático conn();
public function conn(){}


2 - Você não está atribuindo uma conexão antes de chamar o método prepare();
$inserir = BD::$conn->prepare("UPDATE clientes set nome = 'Jonas' WHERE id=1");


O correto seria assim:
class BD{
    public static $conn;
    public function __construct(){}

    public static function conn(){
        if(is_null(self::$conn)){
            self::$conn = new PDO('mysql:host=localhost;dbname=cadastro','root','');
            self::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }

        return (self::$conn) ? self::$conn : false;
    }
}

$conexao = BD::conn();
$inserir = $conexao->prepare("UPDATE clientes set nome = 'Jonas' WHERE id=1");
$inserir->execute();

William

William
Responder

Mais Posts

29/12/2015

Wesley Jonas

Obrigado. Por que nessa conexão tem que haver um método construct em branco ?
Responder

29/12/2015

William

Geralmente classes que seguem o pattern Singleton escondem o método construtor deixando como private para forçar somente a chamada do método estático, desavisados podem tentar instanciar a classe sendo que o objetivo é haver apenas uma instância em memória por isso do método estático.
Responder

30/12/2015

Wesley Jonas

Obrigado amigo.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar