Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Iury Borges

Eeviando dados ao banco, resulta em erro?

Recommended Posts

Gente quando vo tenta manda as informações ao meu banco resulta no seguinte erro:

 

Notice: Undefined variable: dbh in C:\xampp\htdocs\diamond_black\moda\vestido\php\index2.php on line 24

Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\diamond_black\moda\vestido\php\index2.php on line 24

 

Código php:

 

 

<?php
header('Content-Type: text/html; charset=utf-8', true);
//recupera os valores
$circunferencia_cintura=$_POST['circunferencia_cintura'];
$circunferencia_busto=$_POST['circunferencia_busto'];
$circunferencia_quadril=$_POST['circunferencia_quadril'];
$comprimento_corpo_frente=$_POST['comprimento_corpo_frente'];
$comprimento_corpo_costas=$_POST['comprimento_corpo_costas'];
$meca_ombro=$_POST['meca_ombro'];
$meca_altura_seios=$_POST['meca_altura_seios'];
$meca_entrecavas_frente=$_POST['meca_entrecavas_frente'];
$meca_entrecavas_costas=$_POST['meca_entrecavas_costas'];
$meca_comprimento_vestido=$_POST['meca_comprimento_vestido'];
$pdo=new PDO("mysql:localhost;dbname=protudo","root","");//conecta ao banco
$stmt = $dbh->prepare("INSERT INTO compras (circunferencia_cintura,circunferencia_quadril,circunferencia_busto,comprimento_corpo_frente,comprimento_corpo_costas,meca_ombro,meca_altura_seios,meca_entrecavas_costas,meca_comprimento_vestido) VALUES ('$circunferencia_cintura','$circunferencia_quadril','$circunferencia_busto','$comprimento_corpo_frente','$comprimento_corpo_costas','$meca_ombro','$meca_altura_seios','$meca_entrecavas_costas','$meca_comprimento_vestido')")or die(mysql_error());//inserção no banco
$stmt->bindParam(':circunferencia_cintura', $circunferencia_cintura);
$stmt->bindParam(':circunferencia_quadril', $circunferencia_quadril);
$stmt->bindParam(':circunferencia_busto', $circunferencia_busto);
$stmt->bindParam('comprimento_corpo_frente', $comprimento_corpo_frente);
$stmt->bindParam('comprimento_corpo_costas', $comprimento_corpo_costas);
$stmt->bindParam(':meca_entrecavas_frente', $meca_entrecavas_frente);
$stmt->bindParam(':meca_entrecavas_costas', $meca_entrecavas_costas);
$stmt->bindParam(':meca_ombro', $meca_ombro);
$stmt->bindParam(':', $meca_comprimento_vestido);
$stmt->bindParam(':meca_altura_seios',$meca_altura_seios);
// insert one row
$name = 'one';
$rua = 1;
$stmt->execute();
?>
Já to horas tentando resolver esse problemas sozinho, mais não acho e erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque o try catch no código:

 

<?php
header('Content-Type: text/html; charset=utf-8', true);
//recupera os valores
$circunferencia_cintura=$_POST['circunferencia_cintura'];
$circunferencia_busto=$_POST['circunferencia_busto'];
$circunferencia_quadril=$_POST['circunferencia_quadril'];
$comprimento_corpo_frente=$_POST['comprimento_corpo_frente'];
$comprimento_corpo_costas=$_POST['comprimento_corpo_costas'];
$meca_ombro=$_POST['meca_ombro'];
$meca_altura_seios=$_POST['meca_altura_seios'];
$meca_entrecavas_frente=$_POST['meca_entrecavas_frente'];
$meca_entrecavas_costas=$_POST['meca_entrecavas_costas'];
$meca_comprimento_vestido=$_POST['meca_comprimento_vestido'];
 
 
try{
 
 $pdo=new PDO("mysql:localhost;dbname=protudo","root","");//conecta ao banco
 
 
 
 
$stmt = $pdo->prepare("INSERT INTO compras (circunferencia_cintura,circunferencia_quadril,circunferencia_busto,comprimento_corpo_frente,comprimento_corpo_costas,meca_ombro,meca_altura_seios,meca_entrecavas_costas,meca_comprimento_vestido) VALUES ('$circunferencia_cintura','$circunferencia_quadril','$circunferencia_busto','$comprimento_corpo_frente','$comprimento_corpo_costas','$meca_ombro','$meca_altura_seios','$meca_entrecavas_costas','$meca_comprimento_vestido')");//inserção no banco
 
 
$stmt->bindParam(':circunferencia_cintura', $circunferencia_cintura);
$stmt->bindParam(':circunferencia_quadril', $circunferencia_quadril);
$stmt->bindParam(':circunferencia_busto', $circunferencia_busto);
$stmt->bindParam('comprimento_corpo_frente', $comprimento_corpo_frente);
$stmt->bindParam('comprimento_corpo_costas', $comprimento_corpo_costas);
$stmt->bindParam(':meca_entrecavas_frente', $meca_entrecavas_frente);
 
$stmt->bindParam(':meca_entrecavas_costas', $meca_entrecavas_costas);
$stmt->bindParam(':meca_ombro', $meca_ombro);
$stmt->bindParam(':', $meca_comprimento_vestido);
$stmt->bindParam(':meca_altura_seios',$meca_altura_seios);
 
 
 
 
// insert one row
$name = 'one';
$rua = 1;
$stmt->execute();

}catch(PDOException $e){
 echo $e->getMessage();
}
 
 
 
?>

O or die(mysql_error()); Não é usado com PDO

 

 

Substitua o código e poste o erro exibido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não relato nenhum erro, quando envio ele só fica página em branco e não envia.

 

 

O nome do meu banco, tabela e as informações da tabela confere com o que esta no meu banco de dados e meu servidor esta funcionando direito.



Se for útil o código html:

 

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sem título</title>
<link rel="stylesheet" type="text/css" href="../css/estilos.css" />
</head>
<body>
<table align="center">
<tr>
<td>
<img src="../../img/vestido_de_festa/vestidos-de-festa-modelos-verao-2013.jpg">
</td>
<td>
<form action="index2.php" method="post">
<label>Circunferência da cintura*</label>
<input type="text" name="circunferencia_cintura"><br>
<label>Circunferência do busto*</label>
<input type="text" name="circunferencia_busto"><br>
<label>Circunferência do quadril*</label>
<input type="text" name="circunferencia_quadril"><br>
<label>Comprimento do corpo frente*</label>
<input type="text" name="comprimento_corpo_frente"><br>
<label>Comprimento do corpo costas*</label>
<input type="text" name="comprimento_corpo_costas"><br>
<label>Meça o ombro*</label>
<input type="text" name="meca_ombro"><br>
<label> Meça a altura dos seios*</label>
<input type="text" name="meca_altura_seios"><br>
<label>Meça a entrecavas frente*</label>
<input type="text" name="meca_entrecavas_frente"><br>
<label>Meça a entrecavas costas*</label>
<input type="text" name="meca_entrecavas_costas"><br>
<label>Meça o comprimento do vestido*</label>
<input type="text" name="meca_comprimento_vestido"><br>
<label>Meça o comprimento da manga(Opcional)</label>
<input type="text" name="meca_comprimento_vestido"><br>
<label>Meça o punho da manga(opcional)</label>
<input type="text" name="meca_comprimento_vestido"><br>
<input type="submit" value="compra">
</form>
</td>
</tr>
</table>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao usar pdo você não pode colocar as variáveis diretamente na SQL se você está utilizando o bindPAram

 

Substitua por este código e veja se exibe alguma mensagem na tela:

 

<?php
header('Content-Type: text/html; charset=utf-8', true);
//recupera os valores
$circunferencia_cintura=$_POST['circunferencia_cintura'];
$circunferencia_busto=$_POST['circunferencia_busto'];
$circunferencia_quadril=$_POST['circunferencia_quadril'];
$comprimento_corpo_frente=$_POST['comprimento_corpo_frente'];
$comprimento_corpo_costas=$_POST['comprimento_corpo_costas'];
$meca_ombro=$_POST['meca_ombro'];
$meca_altura_seios=$_POST['meca_altura_seios'];
$meca_entrecavas_frente=$_POST['meca_entrecavas_frente'];
$meca_entrecavas_costas=$_POST['meca_entrecavas_costas'];
$meca_comprimento_vestido=$_POST['meca_comprimento_vestido'];
 
try{
	$pdo=new PDO("mysql:localhost;dbname=protudo","root","");//conecta ao banco
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
	$stmt = $pdo->prepare("INSERT INTO compras (circunferencia_cintura ,circunferencia_quadril, circunferencia_busto ,comprimento_corpo_frente ,comprimento_corpo_costas ,meca_ombro ,meca_altura_seios ,meca_entrecavas_costas ,meca_comprimento_vestido) VALUES (:circunferencia_cintura ,:circunferencia_quadril ,:circunferencia_busto ,:comprimento_corpo_frente ,:comprimento_corpo_costas ,:meca_ombro ,:meca_altura_seios ,:meca_entrecavas_costas ,:meca_comprimento_vestido)");//inserção no banco
 
 
$stmt->bindParam(':circunferencia_cintura', $circunferencia_cintura);
$stmt->bindParam(':circunferencia_quadril', $circunferencia_quadril);
$stmt->bindParam(':circunferencia_busto', $circunferencia_busto);
$stmt->bindParam(':comprimento_corpo_frente', $comprimento_corpo_frente);
$stmt->bindParam(':comprimento_corpo_costas', $comprimento_corpo_costas);
$stmt->bindParam(':meca_entrecavas_frente', $meca_entrecavas_frente);
 
$stmt->bindParam(':meca_entrecavas_costas', $meca_entrecavas_costas);
$stmt->bindParam(':meca_ombro', $meca_ombro);
$stmt->bindParam(':meca_comprimento_vestido', $meca_comprimento_vestido);
$stmt->bindParam(':meca_altura_seios',$meca_altura_seios);
 
 
 
 
// insert one row
$name = 'one';
$rua = 1;


if($stmt->execute()){
	echo "Inserido com Sucesso";
}else{
	echo "Erro ao Inserir";
}

}catch(PDOException $e){
 echo 'Erro : '.$e->getMessage();
}
 
 
 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro : SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

 

Erro: SQLSTATE [HY093]: Número de parâmetro inválido: número de variáveis ​​ligadas não corresponde número de tokens (traduzido)

 

O que isso significa?



Acabei de corrigir o erro que postei anteriomente agora me deu outro erro

 

Erro: SQLSTATE [3D000]: Invalid nome de catálogo: 1046 Nenhum banco de dados selecionado(traduzido

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
header('Content-Type: text/html; charset=utf-8', true);
//recupera os valores
$circunferencia_cintura=$_POST['circunferencia_cintura'];
$circunferencia_busto=$_POST['circunferencia_busto'];
$circunferencia_quadril=$_POST['circunferencia_quadril'];
$comprimento_corpo_frente=$_POST['comprimento_corpo_frente'];
$comprimento_corpo_costas=$_POST['comprimento_corpo_costas'];
$meca_ombro=$_POST['meca_ombro'];
$meca_altura_seios=$_POST['meca_altura_seios'];
$meca_entrecavas_frente=$_POST['meca_entrecavas_frente'];
$meca_entrecavas_costas=$_POST['meca_entrecavas_costas'];
$meca_comprimento_vestido=$_POST['meca_comprimento_vestido'];
 
try{
	$pdo=new PDO("mysql:localhost;dbname=protudo","root","");//conecta ao banco
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
	$stmt = $pdo->prepare("INSERT INTO compras (circunferencia_cintura ,circunferencia_quadril, circunferencia_busto ,comprimento_corpo_frente ,comprimento_corpo_costas ,meca_ombro ,meca_altura_seios ,meca_entrecavas_costas ,meca_comprimento_vestido) VALUES (:circunferencia_cintura ,:circunferencia_quadril ,:circunferencia_busto ,:comprimento_corpo_frente ,:comprimento_corpo_costas ,:meca_ombro ,:meca_altura_seios ,:meca_entrecavas_costas ,:meca_comprimento_vestido)");//inserção no banco
 
 
$stmt->bindParam(':circunferencia_cintura', $circunferencia_cintura);
$stmt->bindParam(':circunferencia_quadril', $circunferencia_quadril);
$stmt->bindParam(':circunferencia_busto', $circunferencia_busto);
$stmt->bindParam(':comprimento_corpo_frente', $comprimento_corpo_frente);
$stmt->bindParam(':comprimento_corpo_costas', $comprimento_corpo_costas);
$stmt->bindParam(':meca_entrecavas_costas', $meca_entrecavas_costas);
$stmt->bindParam(':meca_ombro', $meca_ombro);
$stmt->bindParam(':meca_comprimento_vestido', $meca_comprimento_vestido);
$stmt->bindParam(':meca_altura_seios',$meca_altura_seios);
 
 
 
 
// insert one row
$name = 'one';
$rua = 1;


if($stmt->execute()){
	echo "Inserido com Sucesso";
}else{
	echo "Erro ao Inserir";
}

}catch(PDOException $e){
 echo 'Erro : '.$e->getMessage();
}
 
 
 
?>

Tente Assim :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok



O que vc mando gerou esse erro

 

Erro: SQLSTATE [HY000] [1049] banco de dados desconhecido 'produdo'

 

O certo é $pdo=new PDO("mysql:host=localhost;dbname=produto","root","");//conecta ao banco

Inserido com Sucesso


Agora vamos entender por que eu errei para que isso não aconteça mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você errou pois você não usou o bindParam corretamente , pois você não deve colocar as variaveis diretamente no SQL

 

E você deveria sempre usar o:

 

try{

//Aqui vai o código

}catch(PDOException $e){

echo $e->getMessage();

}

 

Assim os erros serão sempre exibidos



Se Você quiser Aprender Mais Sobre PDO você pode Olhar Esta Série de Video Aulas Tem 7 Videos

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.