Ir ao conteúdo

Posts recomendados

Postado

Olá !

 

Estou desenvolvendo um sisteminha em html,php e mysql. 

 

Fiz uma conexão utilizando o POST para enviar dados de um formulário pro banco de dados Mysql. Mas  por algum motivo, meu php de inserção de dados parou de funcionar. Ele até exibe a mensagem de cadastro efetivado, mas quando olho no banco, nada foi inserido.


Abaixo coloco o código PHP que estou utilizando (apenas tirei algumas variáveis, pois eram mais de 80):

 

<?php 
$conexao = mysqli_connect ("127.0.0.1","root"); 
mysqli_select_db ($conexao,"orca"); 
if (!$conexao) die ("Erro de conex?o com localhost, o seguinte erro ocorreu -> ".mysqli_error()); 


$lec         = $_POST["lec"]; 
$pmp         = $_POST["pmp"]; 
$responsavel = $_POST["responsavel"]; 
$dia         = $_POST["dia"]; 
$mes         = $_POST["mes"]; 
$ano         = $_POST["ano"]; 

$sql = "INSERT INTO cetaceos VALUES"; 
$sql .= "('$lec','$pmp','$responsavel','$dia','$mes','$ano')"; 

$resultado = mysqli_query ($conexao,$sql); 
Echo "Cadastro realizado"; 
mysqli_close ($conexao); 
?>

Outra coisa. Tentei achar como realizar uma busca e exibir o resultado de apenas uma linha, mas só consegui fazer com que todos os dados inseridos no banco apareçam. Alguem sabe como pesquisar e exibir somente o resultado de uma linha utilizando uma das variáveis para localizar ?

 

Muito obrigado.

Postado

Inserção

Veja no arquivo de log se o erro está exibido lá;

OU adicione or die(mysqli_error())

 

Possíveis erros: Você está tentando inserir um tipo de dados não suportado pela coluna; você não está informando a quantidade exata de colunas que tem na tabela ( já que você não informou em quais colunas salvar o banco vai salvar em todas na sequencia, o que ocasiona em erros;

 

 $resultado = mysqli_query ($conexao,$sql) or die(mysqli_error($conexao))

 

 

Eu não sei se entendi sua segunda pergunta, mas uma forma de selecionar apenas um registro é utlizar o comando WHERE no sql;

  • Moderador
Postado

@Lucas Neves Videira Seja bem vindo em nosso Clube do Hardware.

 

Primeiramente, acho que seu código precisa ser revisado e alterar algumas coisas.

Por exemplo, crie um arquivo separado para a conexão:

<?php 
 $conexao = mysqli_connect("127.0.0.1","root", "", "orca"); 
 if (!$conexao):
    die("Erro de conexão com localhost, o seguinte erro ocorreu -> ". mysqli_error());
 endif;

Perceba que a primeira mudança foi o jeito de como você faz a conexão. Na versão antiga do mysql, era necessário chamar a função mysql_select_db().  No mysqli não é necessário porque você deve informar o nome do banco como parâmetro da função:

 

mysqli_connect("localhost","usuario","senha","nome do banco de dados");

 

<?php 
//inclui a conexão com o banco de dados
include 'conexao.php';

//variáveis vindas do formulário
$lec         = $_POST["lec"]; 
$pmp         = $_POST["pmp"]; 
$responsavel = $_POST["responsavel"]; 
$dia         = $_POST["dia"]; 
$mes         = $_POST["mes"]; 
$ano         = $_POST["ano"]; 

//Função query que insere os dados com a instrução SQL
$resultado = mysqli_query ($conexao,"INSERT INTO cetaceos(lec, 
                                                          pmp, 
                                                          responsavel, 
                                                          dia, 
                                                          mes, 
                                                          ano) 
                                     VALUES('$lec',
                                            '$pmp',
                                            '$responsavel',
                                            '$dia',
                                            '$mes',
                                            '$ano')"); 

//testa se o mysqli_query foi executado com sucesso.
if($resultado):
  echo "Cadastro realizado"; 
else:
  echo "Cadastro não realizado";
endif;

mysqli_close($conexao); 
?>

Deixei os comentários para fácil entendimento.

Se você disse que é mais de 80 variáveis, creio que depois você vai ter que implementar cada campo no seu insert.

 

Lembre-se de que a sintaxe de insert é assim:

 

INSERT INTO [tabela](campos) VALUES(valores).

NUnca deves esquecer de colocar em quais campos será inserido. No seu código não apresentava em quais campos, somente os valores.

 

PS: coloquei o SQL naquela forma para você ver os campos e valores na instrução SQL e também para deixar o código mais organizado aqui no clube do hardware.

  • Curtir 1
Postado

Caro amigo

 

Lucas

 

Cria um arquivo apenas de conexão desta forma:

<?php

       //Arquivo config.php

        //DB configuração Constants
        define('_HOST_NAME_', 'localhost');
        define('_USER_NAME_', 'root');
        define('_DB_PASSWORD', '');
        define('_DATABASE_NAME_', 'nomeBancoDados');
        
        //PDO Conexão com o Banco de Dados
        try {
          
          $conexao = new PDO('mysql:host='._HOST_NAME_.';dbname='._DATABASE_NAME_, _USER_NAME_, _DB_PASSWORD);
          
          $conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        } catch(PDOException $error_conecta) {
        
          echo 'ERROR: ' . $error_conecta->getMessage();
        
        }

?>

 

 

 

Depois no seu arquivo que for usar para INSERIR, faz desta forma:

<?php
   //Chama a pasta de Conexão
   include"Conectar/config.php";


      if(isset($_POST['executar']) && $_POST['executar'] == 'Gravar'){     
        $cotaQtde     = strip_tags(trim($_POST['respQtde'])); 
        $cotaVlr      = strip_tags(trim($_POST['respValor'])); 

        $sql_pr = 'INSERT INTO cotaResp (cotaQtde, cotaVlr) ';
        $sql_pr .= 'VALUES (:cotaQtde, :cotaVlr)';
         

        try{
            $query_pr = $conecta->prepare($sql_pr);  
            $query_pr->bindValue(':cotaQtde',$cotaQtde,PDO::PARAM_STR);  
            $query_pr->bindValue(':cotaVlr',$cotaVlr,PDO::PARAM_STR);                    
            $query_pr->execute();
          
            echo '<div class="comunicado">Produto Cadastrado com Sucesso!</div><!--aviso-->';

            //Redirecionando para Caixa de Enrada do Cliente
            echo '<meta http-equiv="refresh" content="2, 
                     URL=painel.php?exe=cadastro/cot_itens&cotaNum='.$cotaNum.'&clieId='.$clieId.'" />';

          } catch(PDOexception $error_novoPr) {
            echo 'Erro ao Cadastrar o Produto '.$error_novoPr->getMessage();
          }

      } //Fim do IF


?>

 

Espero ter ajudado e esclarecido.

 

Renato

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!