Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 540972
            [titulo] => 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
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-12-29 07:27:10
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 269142
            [status] => A
            [isExample] => 
            [NomeUsuario] => William 
            [Apelido] => William (Devwilliam)
            [Foto] => 269142_20150809195205.jpg
            [Conteudo] => 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();
[code]public function conn(){}[/code]

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

O correto seria assim:
[code]
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();
[/code] ) )

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

PHP
Wesley Jonas
   - 28 dez 2015

#Código

<?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();

Post mais votado

William (devwilliam)
   - 29 dez 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();
#Código

public function conn(){}


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


O correto seria assim:
#Código
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();

1
|
0

Wesley Jonas
   - 29 dez 2015

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

0
|
0

William (devwilliam)
   - 29 dez 2015

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.

1
|
0

Wesley Jonas
   - 30 dez 2015

Obrigado amigo.

0
|
0