jmlab Postado Fevereiro 10, 2014 Denunciar Share Postado Fevereiro 10, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Markus Magnus Postado Fevereiro 11, 2014 Denunciar Share Postado Fevereiro 11, 2014 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jmlab Postado Fevereiro 11, 2014 Autor Denunciar Share Postado Fevereiro 11, 2014 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 :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Markus Magnus Postado Fevereiro 11, 2014 Denunciar Share Postado Fevereiro 11, 2014 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jmlab Postado Fevereiro 11, 2014 Autor Denunciar Share Postado Fevereiro 11, 2014 Mais uma vez, muito obrigado pela rápida resposta! :) Devo então nos campos retirar 1 valor, certo? Vou testar então, mas pergunto, não deveria errar localmente também? :p Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Markus Magnus Postado Fevereiro 11, 2014 Denunciar Share Postado Fevereiro 11, 2014 O pior que deveria rsrs Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jmlab Postado Fevereiro 11, 2014 Autor Denunciar Share Postado Fevereiro 11, 2014 pois! rsrsrsrs! Mas testo e depois falo de volta! ;) Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jmlab Postado Fevereiro 12, 2014 Autor Denunciar Share Postado Fevereiro 12, 2014 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Markus Magnus Postado Fevereiro 13, 2014 Denunciar Share Postado Fevereiro 13, 2014 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ricardogs1812 Postado Outubro 24, 2019 Denunciar Share Postado Outubro 24, 2019 Verifica se as tabelas na programação estão em caixa alta e baixa baixa exatamente como no banco de dados. Sua maquina local deve ser Windows e o Servidor deve ser Linux. O Windows ignora as caixas altas e caixas baixas, já no Linux ele já da problemas,,, Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jmlab
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
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.