>
Olá
Não estou conseguindo realizar o inert no Banco de Dados, ao clicar no salvar recebo a seguinte mensagem:
Fatal error: Call to a member function bind_param() on a non-object in C:\EasyPHP\www\TarefasSsim\TarefasSsim\Model\usuarioDAO.php on line 11
Segue abaixo o Código da usuarioDAO.php
public function insert(usuarioVO $value){
$SQL = "INSERT INTO tb_usuarios (nome, tipo, email) VALUES (";
$SQL .= "?,?,?)";
$DB = new DB();
$DB->getConnection();
$pstm = $DB->execSQL($SQL);
$pstm->bind_param("sss", $value->getNome(), $value->getTipo(), $value->getEmail());
if($pstm->execute()){
return true;
}
else{
return false;
}
}
ola Nilson,
nao ta faltando um ; ali
$SQL .= "?,?,?);" ;
Olá Andre,
Meu erro ainda permanece:
Fatal error: Call to a member function bind_param() on a non-object in C:\EasyPHP\www\TarefasSsim\TarefasSsim\Model\usuarioDAO.php on line 11
class UsuarioDOA{
public function insert(usuarioVO $value){
$SQL = "INSERT INTO tb_usuarios (nome, tipo, email) VALUES (";
$SQL .= "?,?,?);";
$DB = new DB();
$DB->getConnection();
$pstm = $DB->execSQL($SQL);
$pstm->bind_param("sss", $value->getNome(), $value->getTipo(), $value->getEmail());
if($pstm->execute()){
return true;
}
else{
return false;
}
}
Olá Andre,
Meu erro ainda permanece:
Fatal error: Call to a member function bind_param() on a non-object in C:\EasyPHP\www\TarefasSsim\TarefasSsim\Model\usuarioDAO.php on line 11
class UsuarioDOA{
public function insert(usuarioVO $value){
$SQL = "INSERT INTO tb_usuarios (nome, tipo, email) VALUES (";
$SQL .= "?,?,?);";
$DB = new DB();
$DB->getConnection();
$pstm = $DB->execSQL($SQL);
$pstm->bind_param("sss", $value->getNome(), $value->getTipo(), $value->getEmail());
if($pstm->execute()){
return true;
}
else{
return false;
}
}
faça o seguinte
class UsuarioDOA
mude para esse class UsuarioDAO
E tire la o ponto e virgula q eu pedi pra vc colocar no outro post
Olá Andre,
Realizei o que sugeriu porem o erro ainda permanece:
Fatal error: Call to a member function bind_param() on a non-object in C:\EasyPHP\www\TarefasSsim\TarefasSsim\Model\usuarioDAO.php on line 11
class UsuarioDAO{
public function insert(UsuarioVO $value){
$SQL = "INSERT INTO tb_usuarios (nome, tipo, email) VALUES (";
$SQL .= "?,?,?)";
$DB = new DB();
$DB->getConnection();
$pstm = $DB->execSQL($SQL);
$pstm->bind_param("sss", $value->getNome(), $value->getEmail(), $value->getTipo());
if($pstm->execute()){
return true;
}
else{
return false;
}
}
faça assim..
$pstm->bind_param("sss", $value->getNome(), $value->getEmail(), $value->getTipo());
$pstm = $DB->execSQL($SQL);
Permanece o mesmo Erro,André!
Porem mais um conforme descrito abaixo!
Notice: Undefined variable: pstm in C:\EasyPHP\www\TarefasSsim\TarefasSsim\Model\UsuarioDAO.php on line 13
Fatal error: Call to a member function bind_param() on a non-object in C:\EasyPHP\www\TarefasSsim\TarefasSsim\Model\UsuarioDAO.php on line 13
faça assim entao
$pstm = $DB->execSQL($SQL);
$pstm = $DB->prepare($SQL);
coloque
$pstm = $DB->prepare($SQL);
ao inves deste
$pstm = $DB->execSQL($SQL);
Fiz isso, e mudou o erro:
Fatal error: Call to undefined method DB::prepare() in C:\EasyPHP\www\TarefasSsim\TarefasSsim\Model\UsuarioDAO.php on line 10
Ola Nilson
qual é video aula q vc esta vendo???
Andre,
Estou fazendo o curso PHP com MVC Online, porem devido a esse erro, não consigo prosseguir no conteudo, estou na Aula 7 - Retorno View.
mostre todo o seu arquivo ProdutoModel , seu ProdutoController e seu ProdutoDAO
Segue conforme solicitado segue:
Meu ProdutoModel
class UsuarioModel{
public function insertModel(UsuarioVO $value){
$usua = new UsuarioDAO();
if($value->getTipo()== ""){
$value->setTipo("usuario");
}
return $usua->insert($value);
}
public function deleteModel(UsuarioVO $value){
$usua = new UsuarioDAO();
return $usua->delete($value);
}
public function updateModel( $value){
$usua = new UsuarioDAO();
return $usua->update($value);
}
public function getByIdModel($id){
$usua = new UsuarioDAO();
return $usua->getById($id);
}
public function getAllModel(){
$usua = new UsuarioDAO();
return $usua->getAll();
}
}
Meu ProdutoController
include("/Model/UsuarioModel.php");
include("/Model/UsuarioVO.php");
include("/Model/UsuarioDAO.php");
include("/Model/DB.php");
class UsuarioController{
public function UsuarioController(){
}
public function salvar(){
$model = new UsuarioModel();
$vo = new UsuarioVO();
$vo->setNome($_POST["txtNome"]);
$vo->setTipo($_POST["txtTipo"]);
$vo->setEmail($_POST["txtEmail"]);
if ($model->insertModel($vo)){
$_SESSION["msg"] = "Usuario cadastrado com sucesso.";
} else {
$_SESSION["msg"] = "Erro ao cadastrar Usuario.";
}
header ("Location: View/usuarios/retorno.php");
}
public function update(){
$model = new UsuarioModel();
$vo = new UsuarioVO();
$vo->setId($_POST["txtId"]);
$vo->setNome($_POST["txtNome"]);
$vo->setTipo($_POST["txtTipo"]);
$vo->setEmail($_POST["txtEmail"]);
if ($model->update($vo)){
$_SESSION["msg"] = "Usuario atualizado com sucesso.";
} else {
$_SESSION["msg"] = "Erro ao atualizar Usuario.";
}
header ("Location: View/usuarios/retorno.php");
}
public function novo(){
include("View/usuarios/insert.php");
}
public function editar(){
$model = new UsuarioModel();
$vo = $model->getById($_GET["id"]);
$_SESSION["id"] = $vo->getId();
$_SESSION["nome"] = $vo->getNome();
$_SESSION["tipo"] = $vo->getTipo();
$_SESSION["email"] = $vo->getEmail();
header ("Location: View/usuarios/edit.php");
}
}
Meu ProdutoDOA
class UsuarioDAO{
public function insert(UsuarioVO $value){
$SQL = "INSERT INTO tb_usuarios (nome, tipo, email) VALUES (";
$SQL .= "?,?,?)";
$DB = new DB();
$DB->getConnection();
//$pstm = $DB->execSQL($SQL);
$pstm = $DB->prepare($SQL);
//$pstm->bind_param("sss", $value->getNome(), $value->getEmail(), $value->getTipo());
$pstm->bind_param("sss", $value->getNome(), $value->getEmail(), $value->getTipo());
$pstm = $DB->execSQL($SQL);
if($pstm->execute()){
return true;
}
else{
return false;
}
}
public function update(UsuarioVO $value){
$SQL = "UPDDATE tb_usuarios SET nome = ?, tipo = ?, email = ? WHERE id = ?";
$DB = new DB();
$DB->getConnection();
$pstm = $DB->execSQL($SQL);
$pstm->bind_param("sssi", $value->getNome(),$value->getEmail(),$value->getTipo(),$value->getId());
if($pstm->execute()){
return true;
}
else{
return false;
}
}
public function delete(UsuarioVO $value){
$SQL = "DELETE FROM tb_usuarios WHERE id = ?";
$DB = new DB();
$DB->getConnection();
$pstm = $DB->execSQL($SQL);
$pstm->bind_param("i", $value->getId());
if($pstm->execute()){
return true;
}
else{
return false;
}
}
public function getById($id){
$SQL = "SELECT * FROM tb_usuarios WHERE id = ". addslashes($id);
$DB = new DB();
$DB->getConnection();
$query = $DB->execReader($SQL);
$vo = new UsuarioVO();
while ($reg = $query->fetch_array(MYSQLI_ASSOC)){
$vo->setId($reg["id"]);
$vo->setNome($reg["nome"]);
$vo->setTipo($reg["tipo"]);
$vo->setEmail($reg["email"]);
}
return $vo;
}
public function getAll(){
$SQL = "SELECT * FROM tb_usuarios";
$DB = new DB();
$DB->getConnection();
$query = $DB->execReader($SQL);
return $query;
}
}
mostre tambem seu UsuarioVO
Segue a UsuarioVO;
class UsuarioVO{
private $id;
private $nome;
private $tipo;
private $email;
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getNome() {
return $this->nome;
}
public function setNome($nome) {
$this->nome = $nome;
}
public function getTipo() {
return $this->tipo;
}
public function setTipo($tipo) {
$this->tipo = $tipo;
}
public function getEmail() {
return $this->email;
}
public function setEmail($email) {
$this->email = $email;
}
}
desculpa,
é que faz tanto tempo q eu não vejo essa video aula
q eu me esqueci...
vc pode deixar assim
$DB = new DB();
$DB->getConnection();
$pstm = $DB->execSQL($SQL);
$pstm->bind_param("sss", $value->getNome(), $value->getEmail(), $value->getTipo());
$pstm = $DB->execSQL($SQL);
e vc esta fazendo direitinho conforme a video aula , pq a video aula é sobre o produto e vc esta fazendo do usuario
Imagina, não tem nada que se desculpar!
Obrigado pela disposição!
Fui testar a sua solução e ao chamar a URL:
http://localhost/TarefasSsim/index.php?Controller=Usuario&Action=novo
recebi um novo erro, Segue a mensagem abaixo:
Parse error: syntax error, unexpected '"Controller/"' (T_CONSTANT_ENCAPSED_STRING) in C:\EasyPHP\www\TarefasSsim\index.php on line 3
index.php
if(isset($_GET["Controller"])){
include "Controller/".$_GET["Controller"]."Controller.php";
$class = $_GET["Controller"]."Controller";
eval("\$Controller = new $class();");
if(isset($_GET["Action"])){
eval("\$Controller->\$_GET['Action']();");
}
}
?>
esta faltando
session_start();
Inseri conforme solicitou e o erro permaneceu:
Url:
http://localhost/TarefasSsim/index.php?Controller=Usuario&Action=novo
Erro:
Parse error: syntax error, unexpected '"Controller/"' (T_CONSTANT_ENCAPSED_STRING) in C:\EasyPHP\www\TarefasSsim\index.php on line 3
index.php
session_start();
if(isset($_GET["Controller"])){
include "Controller/".$_GET["Controller"]."Controller.php";
$class = $_GET["Controller"]."Controller";
eval("\$Controller = new $class();");
if(isset($_GET["Action"])){
eval("\$Controller->\$_GET['Action']();");
}
}
?>
mande o seu projeto pra nos analisar
zipa ele e manda
Segue,
O Projeto zipado conforme o solicitado!
http://rlsystem.com.br/forum/disco/uploads/811f476d24790d0dcf7fd05106ddca1e-TarefasSsim.zip
Professor rafael estou com o mesmo problema ! Ao tentar inserir os dados na tabela do banco de dados da o seguinte erro:
Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\MVCPHP\Model\ProdutoDAO.php on line 12
Vou zipar o meu projeto e postar aqui pra você está dando uma analizada o porque do erro ! É incrivel o meu código aparentemente está idêntico ao seu.
Da uma olha ai pra mim veja se você encontrar o erro.
http://rlsystem.com.br/forum/disco/uploads/9ba75a3b0fb445e0108bcbe5bc62ad9d-MVCPHP.zip
Opa Professor Rafael, tudo bom ? Consegui encontrar o erro no meu código, era apenas uma virgula que eu tinha sobrando na classe DAO, quando ia fazer o comando SQL ! UFFFF!!!! Deu uma canseira essa virgula , mas deu certo graças a deus...achei que não fosse conseguir!!! Fica a dica ai pessoal...
Estou com o mesmo problema e não encontro qualquer erro no meu código.
Fiz um echo da variável $SQL, para ver se tinha algum erro no comando, o que não acontece.
INSERT INTO produtos (desc, marca, preco) VALUES (?, ?, ?)
( ! ) Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\MVC\model\produtoDAO.php on line 12
Call Stack
# Time Memory Function Location
1 0.0004 136464 {main}( ) ..\index.php:0
2 0.0021 185016 eval( '$Controller->$_GET['action']();' ) ..\index.php:11
3 0.0021 185072 produtoController->salvar( ) ..\index.php(11) : eval()'d code:1
4 0.0022 185328 ProdutoModel->insertModel( ) ..\ProdutoController.php:18
5 0.0022 185920 produtoDAO->insert( ) ..\produtoModel.php:8
public function insert(produtoVO $value) {
$SQL = "INSERT INTO produtos (desc, marca, preco) VALUES (";
$SQL .= "?, ?, ?)";
$DB = New DB();
echo $SQL;
$DB->getConnection();
$pstm = $DB->execSQL($SQL);
$pstm->bind_param("sss",$value->getDesc(),$value->getMarca(),$value->getPreco());
if($pstm->execute()){
return TRUE;
}else{
return FALSE;
}
}
O campo desc do MySql esta dando conflito com o DESC do SQL, por isso, tive que mudar o nome do campo para descricao, isso mudou o erro para:
INSERT INTO produtos (descricao, marca, preco) VALUES (?, ?, ?)
( ! ) Strict standards: Only variables should be passed by reference in C:\wamp\www\MVC\model\produtoDAO.php on line 13
Call Stack
# Time Memory Function Location
1 0.0006 136464 {main}( ) ..\index.php:0
2 0.0029 185120 eval( '$Controller->$_GET['action']();' ) ..\index.php:11
3 0.0029 185176 produtoController->salvar( ) ..\index.php(11) : eval()'d code:1
4 0.0029 185432 ProdutoModel->insertModel( ) ..\ProdutoController.php:18
5 0.0029 186032 produtoDAO->insert( ) ..\produtoModel.php:8
public function insert(produtoVO $value) {
$SQL = "INSERT INTO produtos (descricao, marca, preco) VALUES (";
//$SQL .= "'".$value->getDescricao()."', '".$value->getMarca()."', '".$value->getPreco()."')";
$SQL .= "?, ?, ?)";
$DB = New DB();
echo $SQL;
$DB->getConnection();
$pstm = $DB->execSQL($SQL);
$pstm->bind_param("sss",$value->getDescricao(),$value->getMarca(),$value->getPreco());
if($pstm->execute()){
return TRUE;
}else{
return FALSE;
}
}
A linha 13 do meu PHP é a que aparece na cópia do código como 10.
$pstm->bind_param("sss",$value->getDescricao(),$value->getMarca(),$value->getPreco());
Fiz a mudança aparentemente sem sentido no código abaixo e desapareceu o erro...
$decricao=$value->getDescricao();
$marca=$value->getMarca();
$preco=$value->getPreco();
$pstm->bind_param("sss",$decricao,$marca,$preco);