Ir para conteúdo

POWERED BY:

Arquivado

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

Thiago Dias_132983

[Resolvido] Erro no INSERT com PDO -

Recommended Posts

esse erro aparece quando tento "mandar" os dados pro banco de dados -> "Call to a member function prepare() on a non-object in"

 

não sei oque fazer ,pois comecei agora com PDO , se puderem me ajudar ficarei grato ! :)

 

aqui o codigo :

 

<?

  require_once("index.php");

$pdo    = conectar();

   $stmt   = $pdo->prepare("INSERT INTO clientes(nome, sobrenome) VALUES (:nome,:sobrenome)");
$stmt->bindValue(":nome",$_POST['nome']);
$stmt->bindValue(":sobrenome",$_POST['sobrenome']);
$stmt->execute();


?>

<form name="form" action="" method="post" >
<input type="text" name="nome" />
<input type="submit" name="enviar" value="Enviar" />

</form>

 

e o index.php

<?php
   //conexão com PDO


   function conectar(){
try{    
   $pdo = new PDO("mysql:host=localhost;dbname=teste","root","");
echo 'foi';
}catch(PDOException $e){
  echo $e->getMessage();   
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua função está retornando um "echo "foi";". Tente, no index.php:

 

<?php
   //conexão com PDO


   function conectar(){
try{    
   $pdo = new PDO("mysql:host=localhost;dbname=teste","root","");
       return $pdo;
}catch(PDOException $e){
  echo $e->getMessage();   
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua função está retornando um "echo "foi";". Tente, no index.php:

 

<?php
   //conexão com PDO


   function conectar(){
try{    
   $pdo = new PDO("mysql:host=localhost;dbname=teste","root","");
       return $pdo;
}catch(PDOException $e){
  echo $e->getMessage();   
}
}
?>

 

Cara muito obrigado , deu certo , eu tinha colocado o echo 'foi'; pra eu saber que a função tinha sido chamada , mais eu não entendi muito por que eu tive que retorna-la pra poder funcionar , pode me dar uma ideia basica ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa madrugada, Thiago Dias.

 

Imagine que você estava renderizando o echo, e a sua função se limitava à isso. Uma vez que você retorna a sua variável $pdo, tudo o que está agragado à ela vai junto. Pense que essa variável não estava sendo transmitida, ou seja, ela não estava chegando até o seu destino.

 

Quando você executou o PDO, o PHP ficou perdido e por isso retornou o erro. Ele não tinha ciência da variável $pdo.

 

Leve isso consigo: uma função ou um método sempre devem retornar algo.

 

Com seres humanos, seria algo assim:

"A função do carteiro é entregar cartas. Ele não vai até a sua casa para lhe dizer que ele é um carteiro, mas sim para levar a carta.

 

O Correio é a sua função, o carteiro é a variável, a carta é o produto e você é o destino."

 

Entendido? :thumbsup:

 

Em off: Eu acho super legal quando os usuários vão além do código e procuram entender como ele funciona. Isso é super importante para o aprendizado e você está de parabéns! :clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa madrugada, Thiago Dias.

 

Imagine que você estava renderizando o echo, e a sua função se limitava à isso. Uma vez que você retorna a sua variável $pdo, tudo o que está agragado à ela vai junto. Pense que essa variável não estava sendo transmitida, ou seja, ela não estava chegando até o seu destino.

 

Quando você executou o PDO, o PHP ficou perdido e por isso retornou o erro. Ele não tinha ciência da variável $pdo.

 

Leve isso consigo: uma função ou um método sempre devem retornar algo.

 

Com seres humanos, seria algo assim:

"A função do carteiro é entregar cartas. Ele não vai até a sua casa para lhe dizer que ele é um carteiro, mas sim para levar a carta.

 

O Correio é a sua função, o carteiro é a variável, a carta é o produto e você é o destino."

 

Entendido? :thumbsup:

 

Em off: Eu acho super legal quando os usuários vão além do código e procuram entender como ele funciona. Isso é super importante para o aprendizado e você está de parabéns! :clap:

 

Cara muito obrigado ! eu entendi direitinho,você explica super bem ! também obrigado por seu comentário positivo !

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.