wellingtonstz 0 Denunciar post Postado Outubro 29, 2018 Boa tarde galera, estou tentando conserta um site que eu tenho acesso da empresa antes era o PostgreSQL agora estou tentando atualizar para o mysqli, estou empacado e gostaria da ajuda de vocês. O erro em questão é: [29-Oct-2018 16:36:16 America/Sao_Paulo] PHP Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in /home/tmengenh/public_html/cphp/contato.php on line 19 [29-Oct-2018 16:36:16 America/Sao_Paulo] PHP Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, null given in /home/tmengenh/public_html/cphp/contato.php on line 22 Scripts: (contatos.php) <?php include "../lib/connection.php"; $nome =$_POST["nome"]; $assunto =$_POST["assunto"]; $ip =$_SERVER['REMOTE_ADDR']; $telefone =$_POST["telefone"]; $email =$_POST["email"]; $v_mensagem =$_POST["menssagem"]; $sql="INSERT INTO 'contato' (id_contato,nome,assunto,ip_cad_contato,telefone,email,mensagem,fg_ativo) VALUES(?,?,?,?,?,?,?,?)"; $stmt = $connect->prepare($sql); $stmt = mysqli_stmt_bind_param ($stmt,'ssssss',$nome,$assunto,$ip,$telefone,$email,$v_mensagem); mysqli_stmt_execute($stmt); mysqli_close($connect); $mensagem = "Novo Contato de $nome\n\n"; $mensagem .= "Nome: $nome\n\n"; $mensagem .= "Assunto: $assunto\n\n"; $mensagem .= "Telefone: $telefone\n\n"; $mensagem .= "Email: $email\n\n"; $mensagem .= "Menssagem: $v_mensagem\n\n"; mail("", "Novo Contato", $mensagem, "From: $nome"); ?> <script charset="utf-8"> alert('Contato efetuado com Sucesso! Aguarde e entraremos em contato.'); parent.window.location="../index.php"; </script> Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Outubro 30, 2018 Movido: MySQL -> PHP Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Outubro 30, 2018 Seu problema está na query. A função MySQLi::prepare retorna um objeto ou FALSE em caso de erro: Citar mysqli_prepare() returns a statement object or FALSE if an error occurred. No seu caso, está retornando um boolean (com o valor FALSO), pois, ocorreu um erro na query. Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Outubro 30, 2018 Boa tarde, então eu tentei fazer varias fontes php, mais nenhuma deu certo, eu não sei sobre programação php, nada não fiz curso só vi algumas dicas em sites e youtube mais não consegui informação por isso estou perguntando e porque estou tentando atualizar esse site, você sabe o erro Gabriel?? vi que esta dando falso como você disse o erro esta no mysqli_prepare, mais não consigo concerta o erro você poderia me fala qual o erro no código que passei ou deve ser erro na tabela do mysql?? em anexo segue a tabela do mysql contato Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Outubro 30, 2018 A coluna menssagem está com dois SS no banco de dados, na sua query está apenas com um. Remova os apóstrofos da palavra/tabela contato, não tem necessidade. Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Outubro 30, 2018 Boa tarde, era os dois ss mesmo, e tbm tirei os apóstrofos do contato!! mais apareceu a seguinte msg de erro, estou tentando pesquisa aqui.. o id_contato preciso coloca ou posso tira, pq o id_contato se encontra em outro codigo php, que se chama listacontatos.php??? segue abaixo as msg de erro PHP Warning: mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters in prepared statement in /home/tmengenh/public_html/cphp/contato.php on line 19 PHP Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in /home/tmengenh/public_html/cphp/contato.php on line 22 Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Outubro 30, 2018 1º erro - Na query, você definiu 8 parâmetros (que são as interrogações), no método abaixo, somente 6 (o número de "s" mais as variáveis seguintes): $stmt = mysqli_stmt_bind_param ($stmt,'ssssss',$nome,$assunto,$ip,$telefone,$email,$v_mensagem); Esses números devem ser compatíveis. 2º erro - É em decorrência do primeiro. Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Outubro 30, 2018 coloquei o código desse jeito, mais ta dando esse erro abaixo: PHP Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in /home/tmengenh/public_html/cphp/contato.php on line 22 código: <?php include "../lib/connection.php"; $nome =$_POST["nome"]; $assunto =$_POST["assunto"]; $ip =$_SERVER['REMOTE_ADDR']; $telefone =$_POST["telefone"]; $email =$_POST["email"]; $v_mensagem =$_POST["menssagem"]; $sql="INSERT INTO 'contato' (nome, assunto, ip_cad_contato, telefone, email, menssagem, fg_ativo) VALUES(?,?,?,?,?,?,?)"; $stmt = $connect->prepare($sql); $stmt = mysqli_stmt_bind_param ($stmt, "sssssss", $nome, $assunto, $ip, $telefone, $email, $v_mensagem, $ativo); mysqli_stmt_execute($stmt); mysqli_close($connect); $mensagem = "Novo Contato de $nome\n\n"; $mensagem .= "Nome: $nome\n\n"; $mensagem .= "Assunto: $assunto\n\n"; $mensagem .= "Telefone: $telefone\n\n"; $mensagem .= "Email: $email\n\n"; $mensagem .= "Menssagem: $v_mensagem\n\n"; mail("", "Novo Contato", $mensagem, "From: $nome"); ?> <script charset="utf-8"> alert('Contato efetuado com Sucesso! Aguarde e entraremos em contato.'); parent.window.location="../index.php"; </script> Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Outubro 30, 2018 Remova o código "$stmt = " da seguinte linha: $stmt = mysqli_stmt_bind_param ($stmt, "sssssss", $nome, $assunto, $ip, $telefone, $email, $v_mensagem, $ativo); Deixando apenas: mysqli_stmt_bind_param ($stmt, "sssssss", $nome, $assunto, $ip, $telefone, $email, $v_mensagem, $ativo); Ele retorna um boolean e está substituindo o statement Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Outubro 31, 2018 Bom dia Gabriel, retirei o $stmt, agora não da nenhum erro, mais tbm não insere no banco de dados o que sera que é?? lembrando que esse site eu estou mexendo no cpanel, e a tabela ja é antiga eu só converti do PostgreSQL para o Mysql .. tem alguma coisa a ve?? Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Outubro 31, 2018 dei um var_dump($stmt); apareceu esse erro olha aee em anexo!! acredito que seja fg_ativo... Compartilhar este post Link para o post Compartilhar em outros sites
marcosmarcolin 0 Denunciar post Postado Outubro 31, 2018 Erro de conexão, verifica pra ver se está tudo correto, debuga e veja o que retorna. Outro é que a coluna fg_ativo não pode ser NULL, você está passando o valor para ela na variável $ativo, e olhando seu código a variável citada nem existe, passe um valor para ela fixo ou insira variável. Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Outubro 31, 2018 Boa tarde Marcos, então acredito que esta conectando normalmente ao banco de dados pq eu acesso a area de login normalmente com o banco de dados.. não entendi como assim valor fixo ou insira variável, sim não existe $ativo eu criei pq não sei o que coloca no fg_ativo!! ou é melhor exclui na tabela? e igual eu falei, não tenho conhecimento em nada em programação!! abaixo segue a conexão ao banco de dados: connection.php <?php# Dados para a conexao com o banco de dados $servidor = 'ip'; #nome dns ou ip do seu servidor http $usuario = 'nome_do_usuario'; #nome de usuario para acesso ao msyqli $senha = 'senha'; #senha de acesso $banco = 'nome_do_banco'; #nome do banco de dados # Executa a conexao com o mysqli @$connect = mysqli_connect($servidor, $usuario, $senha, $banco); if ($connect){ echo "Erro na Comunicação com o Banco de Dados!"; } else { echo "Parabens!! A conexão ao banco de dados ocorreu normalmente!"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Outubro 31, 2018 PHP Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, null given in /home/tmengenh/public_html/cphp/contato.php on line 19 PHP Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, null given in /home/tmengenh/public_html/cphp/contato.php on line 22 agora aparece esses erros acima!! Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Outubro 31, 2018 tenho outro código: sera que tem algum problema com o erro que esta acontecendo no outro código? valores_contato.php segue abaixo: <?php /* Conex達o com o BD */ include("../lib/connection.php"); $cod_contato = $_GET['contato']; /* Constitui a string correspondente ao SQL */ $sql = " SELECT * FROM CONTATO WHERE ID_CONTATO = '$cod_contato' "; /* Realiza a consulta no BD */ $resultado = mysqli_query($connect, $sql); $nome = mysql_result($resultado, 0, "nome"); $assunto = mysql_result($resultado, 0, "assunto"); $menssagem = mysql_result($resultado, 0, "mensagem"); $email = mysql_result($resultado, 0, "email"); $telefone = mysql_result($resultado, 0, "telefone"); $codigo = mysql_result($resultado, 0 "id_con,tato"); $ip = mysql_result($resultado, 0, "ip_cad_conato"); include ("tabela_contato.php"); /* Fehca a conex達o com o BD */ mysqli_close($connect); ?> Compartilhar este post Link para o post Compartilhar em outros sites
marcosmarcolin 0 Denunciar post Postado Novembro 1, 2018 6 horas atrás, wellingtonstz disse: PHP Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, null given in /home/tmengenh/public_html/cphp/contato.php on line 19 PHP Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, null given in /home/tmengenh/public_html/cphp/contato.php on line 22 agora aparece esses erros acima!! Isso não são erros, são avisos que está faltando alguma coisa, pode estar faltando algum parâmetro. Erro na linha abaixo: $stmt = mysqli_stmt_bind_param ($stmt, "sssssss", $nome, $assunto, $ip, $telefone, $email, $v_mensagem, $ativo); Olha novamente a imagem que postou do seu banco, na coluna fg_ativo, a coluna espera um int(11) e NÃO nulo, ou seja, apenas números inteiros(Ex: 1, 5, 28, 50, etc.). E não nulo quer dizer nunca pode deixar de inserir algo na coluna, entende? Você pode mudar isso pelo PHPMyAdmin mesmo, para VARCHAR por exemplo como os outros campos acima, depende do que quer inserir ali. Olhe o código acima, na posição fg_status você está passando a variável $ativo, porém ela não existe, ou seja, você está passando algo NULO para o banco, mas a coluna não aceita NULO, por isso não deixará inserir. E novamente, só aceitará números inteiro, a não ser que você mude. Pedi acima para passar um valor fixo para testar, apenas precisar substituir o $status algum número, 10 por exemplo. Se inserir, já achará o problema. Ex: $stmt = mysqli_stmt_bind_param ($stmt, "sssssss", $nome, $assunto, $ip, $telefone, $email, $v_mensagem, 10); Vai alterando e testando, apenas assim vai conseguir a solução. Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Novembro 1, 2018 Bom dia Marcos, então eu ja tinha colocado 1 antes, pq era assim que estava quando era o PostgreSQL, e tentei outros números tbm mais dava esse erro abaixo: PHP Fatal error: Only variables can be passed by reference in!! não sei pq tem esse fg_ativo, acho que não pode ter duas colunas com in, ou pode? e esse código e muito antigo mudou muitas as coisas neh.. mais to quebrando a cabeça aqui kkk, uma hr consigo!! sera que não estou conseguindo pq tem contatos ja na tabela? ou nada ve Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Novembro 1, 2018 Bom dia galera, alguma ajuda?? Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Novembro 7, 2018 Em 31/10/2018 at 23:09, marcosmarcolin disse: Isso não são erros, são avisos que está faltando alguma coisa, pode estar faltando algum parâmetro. Erro na linha abaixo: $stmt = mysqli_stmt_bind_param ($stmt, "sssssss", $nome, $assunto, $ip, $telefone, $email, $v_mensagem, $ativo); Olha novamente a imagem que postou do seu banco, na coluna fg_ativo, a coluna espera um int(11) e NÃO nulo, ou seja, apenas números inteiros(Ex: 1, 5, 28, 50, etc.). E não nulo quer dizer nunca pode deixar de inserir algo na coluna, entende? Você pode mudar isso pelo PHPMyAdmin mesmo, para VARCHAR por exemplo como os outros campos acima, depende do que quer inserir ali. Olhe o código acima, na posição fg_status você está passando a variável $ativo, porém ela não existe, ou seja, você está passando algo NULO para o banco, mas a coluna não aceita NULO, por isso não deixará inserir. E novamente, só aceitará números inteiro, a não ser que você mude. Pedi acima para passar um valor fixo para testar, apenas precisar substituir o $status algum número, 10 por exemplo. Se inserir, já achará o problema. Ex: $stmt = mysqli_stmt_bind_param ($stmt, "sssssss", $nome, $assunto, $ip, $telefone, $email, $v_mensagem, 10); Vai alterando e testando, apenas assim vai conseguir a solução. Bom dia Anderson consegui, inserir na tabela contatos!! olha o código abaixo: código: <?php include "../lib/connection.php"; $nome =$_POST["nome"]; $assunto =$_POST["assunto"]; $telefone =$_POST["telefone"]; $email =$_POST["email"]; $v_mensagem =$_POST["menssagem"]; $ip =$_SERVER['REMOTE_ADDR']; $var = 1 $sql="INSERT INTO 'contato' (nome, assunto, telefone, email, menssagem, fg_ativo) VALUES(?,?,?,?,?,?,?)"; mysqli_stmt_prepare($stmt, $sql); mysqli_stmt_bind_param ($stmt, "sssssss", $nome, $assunto, $ip, $telefone, $email, $v_mensagem, $var); mysqli_stmt_execute($stmt); mysqli_close($connect); $mensagem = "Novo Contato de $nome\n\n"; $mensagem .= "Nome: $nome\n\n"; $mensagem .= "Assunto: $assunto\n\n"; $mensagem .= "Telefone: $telefone\n\n"; $mensagem .= "Email: $email\n\n"; $mensagem .= "Menssagem: $v_mensagem\n\n"; mail("", "Novo Contato", $mensagem, "From: $nome"); ?> <script charset="utf-8"> alert('Contato efetuado com Sucesso! Aguarde e entraremos em contato.'); parent.window.location="../index.php"; </script> Compartilhar este post Link para o post Compartilhar em outros sites
wellingtonstz 0 Denunciar post Postado Novembro 7, 2018 agora queria uma ajuda com esse erro!! que esta tendo o seguinte erro.. PHP Warning: mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters in prepared statement in e eu dei um var_dump, apareceu esse erro!! Erro na Comunicação com o Banco de Dados!object(mysqli_stmt)#2 (10) { ["affected_rows"]=> int(0) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(0) ["field_count"]=> int(7) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) } segue o código abaixo: valores_contato <?php /* Conexão com o BD */ include("../lib/connection.php"); $cod_contato = $_GET['contato']; /* Constitui a string correspondente ao SQL */ $stmt = mysqli_stmt_init($connect); if (mysqli_stmt_prepare ($stmt, 'SELECT id_contato, nome, assunto, ip_cad_contato, telefone, email, menssagem FROM contato WHERE 1')) /* atribui os parametros aos marcadores */ mysqli_stmt_bind_param ($stmt, 'sssssss', $cod_contato, $nome, $assunto, $ip, $telefone, $email, $menssagem); /* executa a query */ mysqli_stmt_execute($stmt); /* atribui as variaveis de resultado */ mysqli_stmt_bind_result ($stmt, $codigo, $nome, $assunto, $ip, $telefone, $email, $menssagem); /* busca o valor */ mysqli_stmt_fetch($stmt); /* fecha a declaração */ mysqli_stmt_close($stmt); include ("tabela_contato.php"); /* Fehca a conexão com o BD */ mysqli_close($connect); ?> alguma ajuda Marcos ou Gabriel, agradeço!! sumiram Compartilhar este post Link para o post Compartilhar em outros sites