Fórum 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 #540961
28/12/2015
0
<?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
Curtir tópico
+ 0Post mais votado
29/12/2015
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
Gostei + 1
Mais Posts
29/12/2015
Wesley Jonas
Gostei + 0
29/12/2015
William
Gostei + 1
30/12/2015
Wesley Jonas
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)