Jump to content
11closed

php PDO não está inserindo dados no BD

Recommended Posts

Olá pessoal Bom Dia!

 

Estou com um problema aqui, não estou conseguindo inserir dados no BD. Eu instalei recentemente o WAMP aqui e estou usando esse script para inserir dados no BD, mas não sei porque não está inserindo

Config.php

ob_start();
// Tabelas
$tabela1 = "clientes"; 

$bd = "banco"; 
$user = "root"; 
$pass = ""; 
$host = "localhost"; 

	
	try {
		$con = new PDO('mysql:host=localhost;dbname=banco', $user, $pass);
	  
	} catch(PDOException $e) {
		echo 'ERROR: ' . $e->getMessage();
	}

 

Cadastrando.php

error_reporting(E_ALL & ~ E_NOTICE);
	include("../config/config.php");

$run = $con->prepare("INSERT INTO $tabela1 (NOME) VALUES (:NOME)");
$dados = array(':NOME' => $name);
$cadastra = $run->execute($dados);

Meu BD também é novo, coloquei na tabela clientes ID como PRIMARY e A_I

 

Antes eu tinha um site dessa mesma programação que estava funcionando, ai depois de um tempo eu retornei, reinstalei o WAMP, porque estava com erros aqui, aí agora o mesmo site não está inserindo, alguem sabe porque não insere? 

Share this post


Link to post
Share on other sites

Uerlen, a pagina fica branca, não me retorna nenhum erro

 

 

será que tem que ativar algo nos ".ini" ? 

 

no WAMP em PHP, php.ini o meu está assim

extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll

 

Share this post


Link to post
Share on other sites
//Adiciona essas opção na construção do PDO
$opcoes = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
$con = new PDO('mysql:host=localhost;dbname=banco', $user, $pass, $opcoes);


//Coloca seu execute dentro do try/catch
try{
    $con->execute();
}catch(PDOException $e){
    echo $e->getMessage();
}

Tenta assim

 

Share this post


Link to post
Share on other sites

olá. verifique suas variaveis, principalmente essa:

Em 10/08/2018 at 00:29, 11closed disse:

$name

 

Share this post


Link to post
Share on other sites
Em 10/08/2018 at 00:29, 11closed disse:

Olá pessoal Bom Dia!

 

Estou com um problema aqui, não estou conseguindo inserir dados no BD. Eu instalei recentemente o WAMP aqui e estou usando esse script para inserir dados no BD, mas não sei porque não está inserindo

Config.php


ob_start();
// Tabelas
$tabela1 = "clientes"; 

$bd = "banco"; 
$user = "root"; 
$pass = ""; 
$host = "localhost"; 

	
	try {
		$con = new PDO('mysql:host=localhost;dbname=banco', $user, $pass);
	  
	} catch(PDOException $e) {
		echo 'ERROR: ' . $e->getMessage();
	}

 

Cadastrando.php


error_reporting(E_ALL & ~ E_NOTICE);
	include("../config/config.php");

$run = $con->prepare("INSERT INTO $tabela1 (NOME) VALUES (:NOME)");
$dados = array(':NOME' => $name);
$cadastra = $run->execute($dados);

Meu BD também é novo, coloquei na tabela clientes ID como PRIMARY e A_I

 

Antes eu tinha um site dessa mesma programação que estava funcionando, ai depois de um tempo eu retornei, reinstalei o WAMP, porque estava com erros aqui, aí agora o mesmo site não está inserindo, alguem sabe porque não insere? 

 

 

Caro amigo

 

Um exemplo para INSERT em PDO.

<!DOCTYPE html>
<html>
	<head>

     <?php 
       //Conexão com o Banco de Dados
       include"config.php"; 
     ?>

		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<title>PDO Insert</title>
		<link rel="stylesheet" href="">
	</head>
	<body>
		
		<?php 
          
          if(isset($_POST['enviar'])){

              //Funcão strip_tags - elimina qual extensão (html, php e etc)
          	  //Função trim - elimina qualquer espaço em branco
	          $campo1 = strip_tags(trim($_POST['campo1']));
	          $teste =  strip_tags(trim($_POST['teste']));

              //Define a tabela
	          $sql_teste  = 'INSERT INTO teste (campo1,campo2)';
	          $sql_teste .= 'VALUES (:campo1,:campo2)';  //Função [ .= ] - concatenar      

	          try{
	          	    //Antes de executar qualquer tarefa, verifica no Bco Dados Login e Senha
	                $query_teste = $conecta->prepare($sql_teste);

	                $query_teste->bindValue(':campo1',$campo1, PDO::PARAM_STR);
	                $query_teste->bindValue(':campo2',$teste, PDO::PARAM_STR);     

	                //Executa a ação      
	                $query_teste->execute();

	                echo 'Cadastro com sucesso';

	          } catch (PDOException $error_insert) {
	          	echo 'Erro ao cadastrar '.$error_insert->getMessage();
	          }
         
          }

		?>

		<form name="testando" action="" method="post" enctype="multipart/form-data">
          <input type="text" name="campo1" /><br/>
          <input type="text" name="teste" /><br/>
          <input type="submit" name="enviar" value="Enviar" /><br/>
	</body>  

</html>

 

Espero ter ajudado

 

 

 

Share this post


Link to post
Share on other sites

Olá @Remazela fiz do jeito que você falou, e agora está aparecendo a mensagem "Cadastro com sucesso", porém os dados não estão sendo inseridos no BD

 

ficou assim aqui

config.php

ob_start();

$tabela1 = "clientes"; 

//Banco de Dados
$bd = "banco"; 
$user = "root"; 
$pass = ""; 
$host = "localhost"; 
	
	try {
		$con = new PDO('mysql:host=localhost;dbname=banco', $user, $pass);
	  
	} catch(PDOException $e) {
		echo 'ERROR: ' . $e->getMessage();

cadastro.php

<form action="cadastrando.php" method="post" id="form" name="form">
  
  Nome*:  <input id="nome" name="nome" class="text" />
  Email*:  <input id="email" name="email" class="text" />
  
<input type="submit" name="imageField"  class="botcadastro" value="Cadastrar" Onclick="return verifica()" />  
</form> 

cadastrando.php

include("../config/config.php"); 

	$nome = $_POST["nome"];
	$email = $_POST["email"];
	
	$sql_teste  = 'INSERT INTO $tabela1 (NOME,EMAIL)';
	$sql_teste .= 'VALUES (:NOME,:EMAIL)';  //Função [ .= ] - concatenar

	try{
	    //Antes de executar qualquer tarefa, verifica no Bco Dados Login e Senha
	    $query_teste = $con->prepare($sql_teste);

	    $query_teste->bindValue(':NOME',$nome, PDO::PARAM_STR);
	    $query_teste->bindValue(':EMAIL',$email, PDO::PARAM_STR);     

	    //Executa a ação      
	    $query_teste->execute();

	    echo 'Cadastro com sucesso';

	} catch (PDOException $error_insert) {
	    echo 'Erro ao cadastrar '.$error_insert->getMessage();
	}

:sweat: não estou encontrando onde está o erro, será que tem haver algo com a versão do php ou do wamp?

Share this post


Link to post
Share on other sites

Boa noite. Você simplesmente está tratando a variável "$tabela" como TEXTO ao utilizar ela com aspas simples e não dupla.

 

isso aqui:

$sql_teste  = 'INSERT INTO $tabela1 (NOME,EMAIL)';

  É apenas texto, $tabela1 é considerado como texto e não variável. Logo, o insert into está tentando inserir algo em uma tabela com o nome $tabela1 o que não existe. O erro deveria mostrar que não existe essa tabela também. O correto é com aspas duplas:

$sql_teste  = "INSERT INTO $tabela1 (NOME,EMAIL)";

de igual forma, faça na linha concatenada também. Sempre quando for utilizar sintaxe SQL coloque em aspas duplas para uma boa prática e evitar problemas do tipo.

 

Verifique se os campos em sua tabela estão com os nomes maiúsculos.

 

Abraço

Share this post


Link to post
Share on other sites
57 minutos atrás, Alaerte Gabriel disse:

Boa noite. Você simplesmente está tratando a variável "$tabela" como TEXTO ao utilizar ela com aspas simples e não dupla.

 

isso aqui:


$sql_teste  = 'INSERT INTO $tabela1 (NOME,EMAIL)';

  É apenas texto, $tabela1 é considerado como texto e não variável. Logo, o insert into está tentando inserir algo em uma tabela com o nome $tabela1 o que não existe. O erro deveria mostrar que não existe essa tabela também. O correto é com aspas duplas:


$sql_teste  = "INSERT INTO $tabela1 (NOME,EMAIL)";

de igual forma, faça na linha concatenada também. Sempre quando for utilizar sintaxe SQL coloque em aspas duplas para uma boa prática e evitar problemas do tipo.

 

Verifique se os campos em sua tabela estão com os nomes maiúsculos.

 

Abraço

 

Olá @Alaerte Gabriel, coloquei as duplas e deu a mesma coisa. E SIM os campos no BD são maiúsculos também

Share this post


Link to post
Share on other sites

Caro amigo

 

Tenta assim

 

config.php

<?php

    define('HOST','localhost');
    define('DB','nomeBancoDados');
    define('USER','root');
    define('PASS','');            

    $conexao = 'mysql:host='.HOST.'; dbname='.DB;

    try{
         $conecta = new PDO($conexao, USER, PASS);
         $conecta->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

       } catch(PDOexception $error_conecta) {
          echo htmlentities('Erro ao conectar'.$error_conecta->getMessage());
       }

?>

 

o insert

		<?php 
          
              //Funcão strip_tags - elimina qual extensão (html, php e etc)
          	  //Função trim - elimina qualquer espaço em branco
	          $campo1 = strip_tags(trim($_POST['campo1']));
	          $teste =  strip_tags(trim($_POST['teste']));

              //Define a tabela
	          $sql_teste  = 'INSERT INTO teste (campo1, campo2)';
	          $sql_teste .= 'VALUES (:campo1, :campo2)';  //Função [ .= ] - concatenar      

	          try{
	          	    //Antes de executar qualquer tarefa, verifica no Bco Dados Login e Senha
	                $query_teste = $conecta->prepare($sql_teste);

	                $query_teste->bindValue(':campo1',$campo1, PDO::PARAM_STR);
	                $query_teste->bindValue(':campo2',$teste, PDO::PARAM_STR);     

	                //Executa a ação      
	                $query_teste->execute();

	                echo 'Cadastro com sucesso';

	          } catch (PDOException $error_insert) {
	          	echo 'Erro ao cadastrar '.$error_insert->getMessage();
	          }
        

		?>

 

 

Observa no seu código o seguinte:

//Você criou a variável com letras minúsculas
	$nome = $_POST["nome"];
	$email = $_POST["email"];
	

  //Aqui você passou com letras maiúsculas
	    $query_teste->bindValue(':NOME',$nome, PDO::PARAM_STR);
	    $query_teste->bindValue(':EMAIL',$email, PDO::PARAM_STR);

 

Para inserir, as variáveis tem que ter o nome idêntico do banco de dados.

Share this post


Link to post
Share on other sites

Finalmente deu certo pessoal, muito obrigado pela ajuda.

 

Não sei bem qual era o problema, eu deletei toda a tabela no Banco de dados e fiz tudo novamente, aí deu certo 

 

vlw pessoal

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Julie_santiago
      Olá!
      Pessoal, preciso muito de um help urgente. Estou tentando fazer uma simples query ao banco de dados, usando o Axios. Mas, não importa a forma de fazer a requisição, o Axios não funciona. O HTML está abaixo, onde chamo a função enviaDados() através do onsubmit.
      <div class="input-group md-form"> <form method="get" onsubmit="enviaDados()" name="buscar"> <input type="text" id="Form-search2" class="form-control" name="nomeReagente"> <label for="Form-search2">Search</label> <input type="submit" name="pesquisar" value="buscar"> </form> <span class="input-group-text dark lighten-2" id="basic-text1"> <i class="fas fa-search text-dark" aria-hidden="true"></i> </span> </div> Meu arquivo main.js que contém a função enviaDados().
      function enviaDados(){ let nome = buscar.nomeReagente.value recebeDados(nome); } Dentro dessa função, estou chamando outra: recebeDados() que executa a requisição Axios. Passo como parâmetro o valor lá do meu input. OBS.: Meu código está assim, aparentemente confuso, porque o objetivo é ter funções que enviam os dados dos meus formulários e outras funções (genéricas) para receber e tratar esses dados. Abaixo a função recebeDados():
      function recebeDados(nome_reagente){ axios.get('http://localhost/Quimica/php/recebe_json.php', { params: { nome } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log('Não foi possível realizar a requsição: '+error); }) .finally(function () { }); } Não importa o que eu faça, sempre cai no CATCH  - request aborted. Preciso muito resolver esse problema, mas não faço ideia do que pode ser. Relevem qualquer "noobice" porque estou aprendendo o básico ainda.
       
    • By JeanTDZ
      Olá pessoal!
       
      Estou com uma tremenda dificuldade.
      Tenho um formulário na qual está funcionando e cadastrando, porém preciso que o meu botão adicionar autorizado funcione e mostre o que foi digitado para o e-mail. As informações na vdd é enviada para o e-mail e o que será enviado é oque será digitado.
       
      Simplificando ->
      Tenho um botão que adiciona 2 inputs (NOME E SALDO) e conforme for clicando nesse botão, vai adicionando mais campos.
      Dúvida: Como posso fazer com que grave o que foi digitado nesses campos?
       
      Segue o que eu tentei fazer até agora:

      HTML
      <!DOCTYPE html> <html>     <head>         <title>Chame Taxi PrePago</title>                 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>         <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />         <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>         <link rel="icon" type="image/x-icon" href="https://www.flaticon.com/premium-icon/icons/svg/1361/1361253.svg" />         <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>     </head>     <body>         <br />         <div class="container" style="width:100%; max-width:600px">             <h2 align="center">Pré-Pago</h2>             <br />             <div class="panel panel-default">                 <div class="panel-heading"><h4>Registrar</h4></div>                 <div class="panel-body">                     <form method="post" id="register_form">                         <?php echo $message; ?>                         <div class="form-group">                             <label>Nome Completo</label>                             <input type="text" name="user_name" style="text-transform:uppercase" class="form-control" pattern="[a-zA-Z ]+" required />                         </div>                         <div class="form-group">                             <label>E-mail</label>                             <input type="email" name="user_email"  style="text-transform:uppercase" class="form-control" required />                         </div>                         <div class="form-group">                             <label>CEP</label>                             <input type="text" name="campob" id="cep" value="" maxlength="9" onblur="pesquisacep(this.value);" class="form-control">                         </div>                         <div class="form-group"> <table id="myTable" class="table"> <a class="btn btn-primary" onclick="myFunction()" href="#" role="button">Adicionar Autorizado</a>             <thead>                 <tr>                     <th>NOME</th>                     <th>SALDO</th>                 </tr>             </thead>         </table>                         <div class="form-group">                             <input type="submit" name="register" id="register" value="Validar" class="btn btn-info" />                         </div>                     </form>                 </div>             </div>         </div>     </body> </html> JAVASCRIPT 
       
          <script>         var incremento = -1;         function myFunction() {             incremento++;             var table = document.getElementById("myTable");             var row = table.insertRow(0);             var cell1 = row.insertCell(0);             var cell2 = row.insertCell(1);             var cell3 = row.insertCell(2);             var cell4 = row.insertCell(3);             cell1.innerHTML = "NOME";             cell2.innerHTML = '<input type="text" name="name1[${incremento}]" >';             cell3.innerHTML = "SALDO";             cell4.innerHTML = '<input type="text" name="saldo[${incremento}]" size="15px" >';         }     </script>  
    • By gramosiri2
      Oi estou tentando passar um valor através de uma variável em uma query, porém não está mostrando o resultado que eu quero.
       
      Aqui eu pego o ultimo id do pedido
      <?php while($row = $consulta_pedido2->fetch_assoc()){ echo $row['id_pedido']; }?> E aqui eu faço a query e passo variável...
      $query ="SELECT itempedido.id_itempedido, itempedido.valor, ... FROM itempedido INNER JOIN produto ON ... WHERE itempedido.pedido_id = '$row'"; No caso onde está a variável $row, se eu colocar o numero do pedido manualmente, me retorno os itens daquele pedido, agora com a variável não está mostrando, alguma ideia?
    • By gustavodubarbosa
      Estou criando uma página que realize monitoramento de atividades.
      No meu código PHP defini uma variável que busca a data atual, depois passei o parâmetro de conexão com o banco de dados, depois criei um while para buscar as informações, dentro do while criei um if, a condição if é que se a variável data for igual a data cadastrada na atividade, exiba toda a atividade cadastrada. Mas o problema é que o if não está controlando essa condição, está passando direto e exibindo tudo.
      <?php $number = ('23'); $data = date("Y-m-d"); echo "$data"; /*Aqui realizo a conexão com o banco de dados, passo os dados para conectar, caso dê algum erro, o sistema me retorna uma mensagem de erro*/ $conect = mysqli_connect('localhost','root','','projeto_pessoal') or die ('Erro na conexão com o banco de dados'); /*Aqui passo o comando para realizar a busca no banco de dados, aplicando o filtro de pesquisa*/ $result_pesquisa = "SELECT * FROM cadastrar_atividade"; /*Neste momento, mando a execução, preciso passar como parametro a variável com a conexão e a variável com o comando, caso dê erro, será exibido uma mensagem*/ $resultado_pesquisa = mysqli_query($conect, $result_pesquisa); /*Aqui é aberto um laço de repetição para fazer uma varredura no banco de dados, em seguida realizo a exibição do que foi encontrado*/ ?> <h1>Resultado da Pesquisa</h1> <?php while($rows_pesquisa = mysqli_fetch_array($resultado_pesquisa)){ if($rows_pesquisa['prazo'] == $data) echo '<p class="title">'.'ID da atividade: '.'</p>'.'<p class="result">'.$rows_pesquisa['id'].'<br>'.'</p>'; echo '<p class="title">'.'Nome da atividade: '.'</p>'.'<p class="result">'.$rows_pesquisa['nome_atividade'].'<br>'.'</p>'; echo '<p class="title">'.'Descrição da atividade: '.'</p>'.'<p class="result">'.$rows_pesquisa['desc_atividade'].'<br>'.'</p>'; echo '<p class="title">'.'Prioridade: '.'</p>'.'<p class="result">'.$rows_pesquisa['prioridade'].'<br>'.'</p>'; echo '<p class="title">'.'Prazo: '.'</p>'.'<p class="result">'.$rows_pesquisa['prazo'].'<br>'.'</p>'; echo 'carregado'; echo '<hr></hr>'; } ?>  
    • By violin101
      Caros amigos, saudações...
       
      Por favor me perdoa por recorrer ao auxílio dos amigos, mas estou com uma pequena dúvida.
       
      Preciso passar uma Variável [_caminho de Imagem_] para a Modal mas infelizmente não estou conseguindo.
       
      Consigo passar as variáveis do ID e DESCRIÇÃO, mas não consigo passar a variável da IMAGEM.
      <?php <a href="#modalImagem" role="button" data-toggle="modal" class="btn btn-warning" codg="'.$r->idcodigo.'" descr="'.$r->descprd.'" image="'.$r->imgprd.'" style="margin-right: 1%">Ver </a> ?>  
      Como consigo passar essa variável para poder visualizar ?
       
      Grato,
       
      Cesar
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.