Bom Dia pessoal, estou reestruturando um projeto antigo para o Modelo MVC.... Comecei tudo bem, digitava o login e senha e autenticava certo e entrava no Home, então tive a necessidade de fazer umas alterações devido aos extends que necessitei então, não sei porque, começou a apresentar:
Warning: mysqli_prepare() expects parameter 1 to be mysqli, null given in...
Não entendi porque, pois estava funcionando!
PS.: O que está apresentado não é todo o código de cada arquivo... Só postei o que achei necessário para entenderem o problema.
// MainVar.class.php - Variáveis do Sistema( classe que criei para que qualquer arquivo possa usar suas variáveis )
class MainVar {
var $DBName = 'dbName';
var $DBServer = 'localhost';
var $DBUser = 'root';
var $DBPassword = '';
{ ..... }
}
// Conexao.class.php - Classe de Conexao
class Conexao extends MainVar {
public function __construct(){
}
public function Connect(){
$mysqli = mysqli_connect($this->DBServer, $this->DBUser, $this->DBPassword, $this->DBName);
if(mysqli_connect_errno()){
trigger_error('Erro ao tentar conectar ao banco de dados! '.$mysqli->error,E_USER_ERROR);
}
$mysqli->autocommit(false);
mysqli_query($mysqli, "SET NAMES 'utf8'");
mysqli_query($mysqli, 'SET character_set_connection=utf8');
mysqli_query($mysqli, 'SET character_set_client=utf8');
mysqli_query($mysqli, 'SET character_set_results=utf8');
return $mysqli;
}
}
// logar.php
require_once('Config/MainVar.class.php');
require_once('Config/Conexao.class.php');
require_once('Libs/Funcoes.class.php');
require_once('Controller/LoginController.php');
if($_GET['acessar'] == 'acessar'){
$LoginController = new LoginController();
$login = $_POST['login'];
$senha = $_POST['senha'];
// Tenta logar o usuário com os dados
if($LoginController->ValidaUsuario($login, $senha)){
// Usuário logado com sucesso, redireciona ele para a página restrita
header("Location: index.php");
exit;
}
}
// LoginController.php
require_once('Model/LoginModel.php');
class LoginController extends LoginModel{
private $LoginModel;
private $Funcoes;
public function __construct(){
$this->Funcoes = new Funcoes();
}
public function ValidaUsuario($login, $senha){
if($senhaCodificada = $this->Funcoes->CodificaSenha($login, $senha)){
// Chamo o ValidaUsuario de LoginModel
$total = parent::ValidaUsuario($login, $senhaCodificada);
return ($total == 1) ? true : false;
}
}
{...}
}
// LoginModel.php
class LoginModel extends Conexao{
private $mysqli;
public function __construct(){
$this->mysqli = parent::Connect();
}
public function ValidaUsuario($login, $senha){
$sql = "SELECT COUNT(*) AS total
FROM tabela_usuarios
WHERE login = ? AND senha = ?";
if($query = mysqli_prepare($this->mysqli, $sql)){
O PROBLEMA É QUE AQUI NÃO ENTRA MAIS!!!!!
/* ADICIONA OS PARÂMETROS */
mysqli_stmt_bind_param($query, "ss",
$login,
$senha);
/* ADICIONA OS PARAMETROS */
if(mysqli_stmt_execute($query)){
mysqli_stmt_bind_result($query,$total);
if(mysqli_stmt_fetch($query)){
return $total;
}
}
}
}
{...}
}
Então, aí está a dificuldade:
if($query = mysqli_prepare($this->mysqli, $sql)){
$this->mysqli deve(acho) está vazia como informa o Warning.
Achando isso, em LoginModel fiz:
class LoginModel extends Conexao{
private $mysqli;
public function __construct(){
$this->mysqli = parent::Connect();
var_dump($this->mysqli); // ADICIONEI ESTE VAR_DUMP();
}
{ ... }
}
Mas não retornou nada na tela. estou achando que a classe de Conexão não esteja realizando corretamente o extends da classe MainVar OU nã está conseguindo trazer os valores de DBServer, DBUser, DBUser e DBName para a function Connect() da classe Conexao:
Pergunta
Leonardo Felipe
Bom Dia pessoal, estou reestruturando um projeto antigo para o Modelo MVC.... Comecei tudo bem, digitava o login e senha e autenticava certo e entrava no Home, então tive a necessidade de fazer umas alterações devido aos extends que necessitei então, não sei porque, começou a apresentar:
Warning: mysqli_prepare() expects parameter 1 to be mysqli, null given in...
Não entendi porque, pois estava funcionando!
PS.: O que está apresentado não é todo o código de cada arquivo... Só postei o que achei necessário para entenderem o problema.
Então, aí está a dificuldade: if($query = mysqli_prepare($this->mysqli, $sql)){ $this->mysqli deve(acho) está vazia como informa o Warning. Achando isso, em LoginModel fiz:Mas não retornou nada na tela. estou achando que a classe de Conexão não esteja realizando corretamente o extends da classe MainVar OU nã está conseguindo trazer os valores de DBServer, DBUser, DBUser e DBName para a function Connect() da classe Conexao:
$mysqli = mysqli_connect($this->DBServer, $this->DBUser, $this->DBPassword, $this->DBName);
ACHO que está vindo assim, tudo vazio:
$mysqli = mysqli_connect(, , ,);
Mas não to sabendo como confirmar isto...
Será este o problema mesmo? Como posso testar e consequentemente resolver... Como faço??? Estou perdido, OMG!!!
Agradeço antecipadamente pelas dicas!!!
Link para o comentário
Compartilhar em outros sites
2 respostass 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.