Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?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
//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 assimApareceu assim
>
Citar
Fatal error: Call to undefined method PDO::execute()
na linha $con->execute();
olá. verifique suas variaveis, principalmente essa:
>
Em 10/08/2018 at 00:29, 11closed disse:
$name
>
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 ajudadoOlá @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();
}
não estou encontrando onde está o erro, será que tem haver algo com a versão do php ou do wamp?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>
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émCaro 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.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
Não mostrou nada no PDOException?