Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal to com um problema..
Tenho uma classe DAO que estou precisando acessa-la duas vezes seguidas...
Instancie normalmente
$dao = new UsuarioDAO();
só que quando vou chamar o metodo do insert
$dao->insere($usuario, 'usutemp');
$dao->insere($usuario, 'usulog');
ele da o erro
>
PHP Fatal error: Call to a member function bindValue() on a non-object in
E quando eu tento executar só uma das duas chamadas funciona,, só quando eu coloco dessa forma uma abaixo da outra que da o erro.. por que será? alguem poderia me ajudar?
Valeu pessoal
opa.... obrigado por responder... a classe UsuarioDAO é iniciada assim
class UsuarioDAO extends PDOConnectionFactory {
// irá receber uma conexão
public $conex = null;
// constructor
public function UsuarioDAO() {
$this->conex = PDOConnectionFactory::getConnection();
}ok... mas e o método UsuarioDAO::insere() ?
"Dados dados, preciso de dados. Não posso fazer tijolos sem barro"
Informe o código onde se cria o Statement e onde seta os valores, aparentemente o objeto Statement está fechado ou não criado.
o metodo insere é muito grande.. vou colocar só um campo que eu insiro na tabela para nao ficar muito grande o post...
public function insere($usuario, $tabela){
try{
$stmt = $this->conex->prepare("INSERT INTO $tabela(
cliente,
codclsj,
)VALUES(
?,
?)");
$stmt->bindValue(1, $usuario->getCliente() );
$stmt->bindValue(2, $usuario->getCodclsj() );
$stmt->execute();
// fecho a conexão
$this->conex = null;
// caso ocorra um erro, retorna o erro;
$msg = 'CADASTRO REALIZADO';
return $msg;
}catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }$this->conex = null;
Nossa... que vacilo.... mas o que é mais viavel? deixar a conexao aberta e e poder usar o mesmo objeto duas vezes, ou fechar a conexão e obrigar a criar outro objeto?
Interessante seria criar um método para destruir a conexão.
Poste a declaração da tua classe UsuarioDAO.
Depois disso vamos conseguir dizer alguma coisa.