Ir para conteúdo
Fórum Script Brasil
  • 0

Fatal error: Call to a member function execute() on a non-object in


jmlab

Pergunta

Bom dia caros amigos,

tenho um problema que me surgiu e não sei como resolver.

Vou expôr para ver se alguém me puderá ajudar.

Tenho 2 formulários feitos em html + php + mysqli.

Fiz todos os testes localmente e depois de algumas horas (estou a iniciar-me em php e mysqli) consegui enviar toda a informação para a minha BD local.

Os meus formulários são compostos por campos "input", "checkbox" e "dropdown list".

O que acontece, é que ao colocar todos os ficheiros no alojamento do cliente, ao testar os formulários, na hora do envio dá o seguinte erro:

"Fatal error: Call to a member function execute() on a non-object in..."

Não faço ideia do que fazer :(

Claro que colocarei o código ou enviarei se alguém me puder auxiliar.

Só não coloquei já para não tornar já o tópico muito extenso.

Agradeço antecipadamente.

Jay

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Pra poder te dar uma resposta certeira só com o código, mas...

Você deve estar usando PDO correto?

Se sim o problema é que a consulta que você está trabalhando está errada em algum ponto.

Você só precisa postar a parte em que utiliza o PDO para fazer essa consulta.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela resposta :)

Não foi feito em PDO mas em msqli.

O mais estranho de tudo, é que através do MAMP e do localhost, tudo funciona na perfeição :/

Segue o código abaixo:

<?php
ob_start();
ini_set('default_charset', 'UTF-8');
?>
<?php require_once("../../includes/db_connection.php"); ?>
<?php
$actividades = array();
if(!empty($_POST)) {
if(isset($_POST['nome'], $_POST['endereco'], $_POST['localidade'], $_POST['codigo_postal'], $_POST['caixa_postal'], $_POST['telefone'], $_POST['telemovel'], $_POST['fax'], $_POST['email'], $_POST['cae'], $_POST['nif'], $_POST['nome_rep'], $_POST['cargo_rep'], $_POST['telefone_rep'], $_POST['telemovel_rep'], $_POST['fax_rep'], $_POST['email_rep'], $_POST['actividades'], $_POST['escalao'])) {
$nome = trim($_POST['nome']);
$endereco = trim($_POST['endereco']);
$localidade = trim($_POST['localidade']);
$codigo_postal = trim($_POST['codigo_postal']);
$caixa_postal = trim($_POST['caixa_postal']);
$telefone = trim($_POST['telefone']);
$telemovel = trim($_POST['telemovel']);
$fax = trim($_POST['fax']);
$email = trim($_POST['email']);
$cae = trim($_POST['cae']);
$nif = trim($_POST['nif']);
$nome_rep = trim($_POST['nome_rep']);
$cargo_rep = trim($_POST['cargo_rep']);
$telefone_rep = trim($_POST['telefone_rep']);
$telemovel_rep = trim($_POST['telemovel_rep']);
$fax_rep = trim($_POST['fax_rep']);
$email_rep = trim($_POST['email_rep']);
$actividades = implode(' | ', $_POST['actividades']);
$escalao = $_POST['escalao'];
if(!empty($nome) && !empty($endereco) && !empty($localidade) && !empty($codigo_postal) && !empty($telefone) && !empty($telemovel) && !empty($email) && !empty($cae) && !empty($nif) && !empty($nome_rep) && !empty($cargo_rep) && !empty($telefone_rep) && !empty($telemovel_rep) && !empty($email_rep) && !empty($actividades) && !empty($escalao)) {
$insert = $connection->prepare("INSERT INTO socio_colectivo (nome, endereco, localidade, codigo_postal, caixa_postal, telefone, telemovel, fax, email, cae, nif, nome_rep, cargo_rep, telefone_rep, telemovel_rep, fax_rep, email_rep, actividades, escalao, data) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())");
if( $insert !== FALSE ) {
$insert->bind_param('sssssssssssssssssss', $nome, $endereco, $localidade, $codigo_postal, $caixa_postal, $telefone, $telemovel, $fax, $email, $cae, $nif, $nome_rep, $cargo_rep, $telefone_rep, $telemovel_rep, $fax_rep, $email_rep, $actividades, $escalao);
}
if($insert->execute()) {
header('Location: ../../public/form-colectivo-sucesso-pt.php');
die();
}
}
}
}
?>
<?php if (isset($connection)) {mysqli_close($connection); } ?>

Obrigado meu caro :)

Link para o comentário
Compartilhar em outros sites

  • 0

Acredito que o problema é a quantidade de parâmetros.

No prepare() você insere valores em 20 campos, pede por 19 parâmetros (?), sendo que um já tem o valor da data atual (NOW()) e depois no bind_param() você passa 20 parâmetros em vez de 19.

Link para o comentário
Compartilhar em outros sites

  • 0

Bons dias Markus,

aparentemente não resolveu o problema! :/

Eu percebo o que quis dizer com a quantidade de parâmetros relativamente ao bind_param(),

mas na verdade o elemento data e o NOW() são elementos que não fazer parte do formulário em sí.

São valores enviados automaticamente para o campo data da base de dados.

No bind_param só entram os valores pedidos nos formulário, entende? Daí de serem 19 e não 20 variáveis :)

Por isso continuo sem perceber o que se passa :(

Adianta enviar o código do formulário?

Abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Para o problema que eu acredito ter encontrado não adianta me enviar o fomulário.

O que eu quis dizer é que o prepare está esperando 19 parametros

$connection->prepare("INSERT INTO socio_colectivo (nome, endereco, localidade, codigo_postal, caixa_postal, telefone, telemovel, fax, email, cae, nif, nome_rep, cargo_rep, telefone_rep, telemovel_rep, fax_rep, email_rep, actividades, escalao, data) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())"); 

Repare 19 pontos de interrogação.

Porém você está enviando 20 parâmetro pelo bind_param().

$insert->bind_param('sssssssssssssssssss', $nome, $endereco, $localidade, $codigo_postal, $caixa_postal, $telefone, $telemovel, $fax, $email, $cae, $nif, $nome_rep, $cargo_rep, $telefone_rep, $telemovel_rep, $fax_rep, $email_rep, $actividades, $escalao); 

Nunca trabalhei com mysqli, mas acredito que isso é pra dar erro.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...