Estou com um probleminha no meu CRUD para executar algumas inserções no Banco de Dados...
O erro é o seguinte, por favor, gostaria da ajuda de vocês..
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\zero\model\Main.class.php on line 46
Como vocês vão ver, estou forçando a inserção de dados direto no Usuario.php com um array...
Me ajudem, por favor.
Segue o código:
Conn.class.php
<?php
class Conn extends PDO{
private $conn;
public function __construct(){
$config = parse_ini_file('../config/ini/config.ini');
$dsn = "{$config['driver']}:host={$config['host']};dbname={$config['base']}";
$this->conn = new PDO($dsn,$config['user'],$config['pass']);
}
}
Main.class.php
<?php
require_once('Conn.class.php');
class Main extends Conn{
private $conn;
function __construct(){}
//Metodo generico para gravar informacoes no DB
function novo($tabela,$dados){
//Executo um foreach para separar as colunas de valores...
foreach ($dados as $coluna=>$valor){
//Passa as colunas para um Array...
$colunas[] = "`$coluna`";
//Passa os valores para um array...
$valores[] = $valor;
/*
*===============================HOLDERS=============================
*$holders[] = "?"
*Como usamos o Prepared Statement e estamos inserindo os valores
*dinamicamente, precisamos colocar dentro do VALUE as `interrogacoes`
*correspondetes a cada campo. Desta forma, criamos um Array contendo
*o valor de `?`
*===================================================================
*/
$holders[] = "?";
}
/*
*Faco a implsao dos meus dados, pegando o meu Array e convertendo em
*Strings, separando por virgulas.
*/
$colunas = implode(', ',$colunas);
$holders = implode(', ',$holders);
//Aqui eu chamo o $holders[], em VALUES da minha Query
$sql = "INSERT INTO $tabela ($colunas) VALUES ($holders)";
echo $sql;
//Preparo meu SQL para ser executado atraves da variavel $sql
$query = $this->conn->prepare($sql);
/*
*Aqui em execute(), chamamos a nossa Array que realmente possui algum valor.
*Desta forma, toda vez que a minha Array $valores for executada, ele ira
*inserir uma valor em cada '?' da $holders[] dentro de VALUES da minha Query.
*/
$query->execute($valores);
}
//Metodo generico para ler informacoes no DB
function ler($tabela,$colunas){
/*
*Aqui crio a Query que sera chamada. Nela usamos valores dinamicos para
*serem inseridos em minha variavel $sql.
*/
$sql = "SELECT $colunas FROM $tabela";
//SE $condicao não estiver vazia...
if(!empty($condicao)){
/*
*COncatena em $sql WHERE $condicao. Ficaria da seguinte
*forma, o campo $sql concatenado
* SELECT $colunas FROM $tabela WHERE $condicao
*/
$sql .= " WHERE id = $condicao";
}
//Preparo meu SQL para ser executado atraves da variavel $sql
$query = $this->conn->prepare($sql);
//Executo meu objeto que esta com a query SQL preparada...
$query->execute();
/*
*Com o metodo fetchAll(), eu listo todos os meus valores da Array.
*/
$result = $query->fetchAll();
//Por se tratar de uma consulta, preciso retornar o meu objeto...
return $result;
}
//Metodo generico para alterar informacoes no DB
function alterar($tabela,$dados,$id){
/*
*Aqui crio a Query que sera chamada. Nela usamos valores dinamicos para
*serem inseridos em minha variavel $sql.
*/
foreach($dados as $coluna => $valor) {
$colunas[] = "`$coluna` = ?";
$valores[] = $valor;
}
$valores[] = $id;
$colunas = implode(', ', $colunas);
/*
*Com a '?' na minha condicao id eu passarei os valores atraves de um
*Prepared Statement
*/
$sql = "UPDATE $tabela SET $colunas WHERE id = ?";
//Preparo meu SQL para ser executado atraves da variavel $sql
$query = $this->conn->prepare($sql);
$query->execute($valores);
}
//Metodo generico para deletar informacoes no DB
function delete($tabela,$base,$id){
//Preparo meu SQL para ser executado atraves da variavel $sql
//O '?' sera chamado atraves de um Prepared Statement
$sql = "UPDATE $tabela SET " .$base."_ATIVO = 2 WHERE ?";
//Preparo meu SQL para ser executado atraves da variavel $sql
$query = $this->conn->prepare($sql);
//Executo a minha Query passando o meu valor de $id.
$query->execute(array($id));
}
/*
//M�todo gen�rico para visualizar um �nico item no Banco de dados.
function ver($tabela,$campos,$id){
$sql = "SELECT $campos FROM $tabela WHERE $id";
}
*
*/
}
Usuario.php
<?php
require_once('Main.class.php');
class Usuario{
private $query;
public function __construct(){
$this->query = new Main();
}
function novo_usuario(){
$dados = array(
'nome' => 'teste',
'doc' => '123',
'dept' => '1',
'cargo' => 'Teste',
'user' => 'teste',
'pass' => 'teste',
'ativo' => '1',
);
$this->query->novo('usuario',$dados);
}
}
Pergunta
Regis Lacerda
Boa noite galera...
Estou com um probleminha no meu CRUD para executar algumas inserções no Banco de Dados...
O erro é o seguinte, por favor, gostaria da ajuda de vocês..
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\zero\model\Main.class.php on line 46
Como vocês vão ver, estou forçando a inserção de dados direto no Usuario.php com um array...
Me ajudem, por favor.
Segue o código:
Conn.class.php
Main.class.php Usuario.phpLink para o comentário
Compartilhar em outros sites
1 resposta 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.