Ir para conteúdo

POWERED BY:

Arquivado

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

junaooaks

[Resolvido] problema com PDO

Recommended Posts

ola pessoal

 

to com problema em fazer insert usando pdo, a conexao funciona mas nao consigo fazer o insert

 

da este erro

"Fatal error: Call to a member function prepare() on a non-object"

ja habilitei as dll no php.ini de acordo com o tutorial:

http://imasters.com.br/artigo/16221/php/desenvolvendo-com-pdo-php-data-objects

 

estou usando o XAMPP 1.7.3 com o php

[php: 5.3.1] e mysql 5.1.41

a minha pagina de conexao com o banco de dados esta assim:
<?php
 /*
   Este exemplo mostra como efetuar uma conexão MySQL
   usando PDO. Veja que isso é feito com uma chamada
   ao construtor da classe PDO fornecendo os parâmetros
   de conexão.
 */

 $server = "localhost";
 $user = "root";
 $pass = "";
 $db = "db";

 try {
   $conn = new PDO("mysql:host=$server;dbname=$db", $user, $pass);
 }
 catch(PDOException $e){
echo"<script type='text/javascript'> window.alert('NAO FOI POSSIVEL SE CONECTAR COM O BANCO DE DADOS');</script>". $e->getMessage();
exit();
 }
?>


 

a pagina que faz o insert esta assim:

<?php
//função para insert nas tabela empresa usando pdo
function Insert($sql){
$sql = "INSERT INTO empresa (nome, cnpj, endereco, numero, cidade, estado, cep, telefone, email)
		 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
}
?>


 

depois eu faço um include na pagina assim

 


/************PDO******************/
include ("../mysql/empresa.sql.php");

//funcao inserir dados no banco de dados
$stmt = $pdo->prepare(Insert($sql));
$stmt->bindParam(1, $nome);
$stmt->bindParam(2, $cnpj);
$stmt->bindParam(3, $endereco);
$stmt->bindParam(4, $numero);
$stmt->bindParam(5, $cidade);
$stmt->bindParam(6, $uf);
$stmt->bindParam(7, $cep);
$stmt->bindParam(8, $telefone);
$stmt->bindParam(9, $email);
$stmt->execute();

$pdo->commit();

 

ja tentei colocar tudo em mesmo arquivo.php mas o erro continua, alguem pode me passa alguma orientação

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que ao inves de usar o bindParam, não usa execute ?

 

function Insert(){
       return "INSERT INTO empresa (nome, cnpj, endereco, numero, cidade, estado, cep, telefone, email)
                        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
       }

$sql  = Insert();

$stmt = $pdo->prepare( $sql );
$stmt->execute( array( 1, 2, 3, 4 ... ) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não está retornando nada na sua função Insert, do jeito que você fez apesar de estranho deveria retornar o SQL.

 

Deixe a função assim:

 

function Insert($sql){
$sql = 'INSERT INTO empresa (nome, cnpj, endereco, numero, cidade, estado, cep, telefone, email) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)';
return $sql;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera obrigado pela atenção

 

mesmo com a explicaçao nao consegui fazer rodar a consulta dando o mesmo erro

Call to a member function prepare()

<?php
//função para insert nas tabela empresa usando pdo
function Insert(){
$sql = "INSERT INTO empresa (nome, cnpj, endereco, numero, cidade, estado, cep, telefone, email)
		 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
		 return $sql;
}
?>

 

/************PDO******************/
include ("../mysql/empresa.sql.php");

//funcao inserir dados no banco de dados
$sql = Insert();

$stmt = $pdo->prepare($sql);
$stmt->bindParam(1, $nome);
$stmt->bindParam(2, $cnpj);
$stmt->bindParam(3, $endereco);
$stmt->bindParam(4, $numero);
$stmt->bindParam(5, $cidade);
$stmt->bindParam(6, $uf);
$stmt->bindParam(7, $cep);
$stmt->bindParam(8, $telefone);
$stmt->bindParam(9, $email);
$stmt->execute();
$pdo->commit();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola pessoal

 

<?php
 try {
   /*aqui o objeto PDO é $con -----> */$conn = new PDO("mysql:host=$server;dbname=$db", $user, $pass);
 }
 catch(PDOException $e){
echo"<script type='text/javascript'> window.alert('NAO FOI POSSIVEL SE CONECTAR COM O BANCO DE DADOS');</script>". $e->getMessage();
exit();
 }
?>

<?php
/*aqui o objeto PDO é $pdo ---------> */$stmt = $pdo->prepare(Insert($sql));
#resto do código
$pdo->commit();
?>

 

 

Repare nas linhas que comentei, o erro deve estar lá.

Este erro significa que você está usando um não-objeto para chamar uma função. Provavelmente porque o objeto é $con e você usa $pdo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testou como eu te passei cara ?

 

sim senhor sim :D so nao funcinou

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sql = Insert();

 

$stmt = $pdo->prepare($sql);

$stmt->bindParam(1, $nome);

$stmt->bindParam(2, $cnpj);

$stmt->bindParam(3, $endereco);

$stmt->bindParam(4, $numero);

$stmt->bindParam(5, $cidade);

$stmt->bindParam(6, $uf);

$stmt->bindParam(7, $cep);

$stmt->bindParam(8, $telefone);

$stmt->bindParam(9, $email);

$stmt->execute( array( 1, 2, 3, 4 , 5, 6, 7, 8, 9) );

$pdo->commit();

 

e assim mesmo ? nao entendi muito bem

Compartilhar este post


Link para o post
Compartilhar em outros sites

error PDOException: There is no active transaction

 

podem me explicar as extensoes no php.ini ja alterei o que leva a da esta mensagem

 

e aponta o erro na linha $conn->commit(); execução

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tu tah usando $conn mas tu colocou na tua variavel $pdo a conexão....

 

então tu nunca vai conseguir fazer a conexão.

 

ja corrigi isto por isto que esta dando esta mensagem, parece que ele tenta executar a query mas ta faltando alguma coisa do PDO, ISTo e o que eu acho. e se for isto eu nao sei o que pode ser, porque ja liberei todas as extensao pdo no php.ini

Compartilhar este post


Link para o post
Compartilhar em outros sites

gremio10 obrigado pela atenção vo postar todo o codigo

 

conexao mysql pdo

<?php

 $server = "localhost";
 $user = "root";
 $pass = "";
 $db = "teste";

 try {
   $conn = new PDO("mysql:host=$server;dbname=$db", $user, $pass);

 }
 catch(PDOException $e){
echo"<script type='text/javascript'> window.alert('NAO FOI POSSIVEL SE CONECTAR COM O BANCO DE DADOS');</script>". $e->getMessage();
exit();
 }
?>

 

query insert

<?php
//função para insert nas tabela empresa usando pdo
function Insert(){

$sql = "INSERT INTO empresa (nome, cnpj, endereco, numero, cidade, estado, cep, telefone, email)
		 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
		 return $sql;

}
?>

 

jogar os dados na query

<?php
//conexao com banco de dados
include ("../mysql/conexao_mysql.php");

/************PDO******************/
include ("../mysql/empresa.sql.php");

//funcao inserir dados no banco de dados
$sql = Insert();

$stmt = $conn->prepare($sql);
$stmt->bindParam(1, $nome);
$stmt->bindParam(2, $cnpj);
$stmt->bindParam(3, $endereco);
$stmt->bindParam(4, $numero);
$stmt->bindParam(5, $cidade);
$stmt->bindParam(6, $uf);
$stmt->bindParam(7, $cep);
$stmt->bindParam(8, $telefone);
$stmt->bindParam(9, $email);
$stmt->execute();
$conn->commit();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora, ao inves de

 

$stmt = $conn->prepare($sql);
$stmt->bindParam(1, $nome);
$stmt->bindParam(2, $cnpj);
$stmt->bindParam(3, $endereco);
$stmt->bindParam(4, $numero);
$stmt->bindParam(5, $cidade);
$stmt->bindParam(6, $uf);
$stmt->bindParam(7, $cep);
$stmt->bindParam(8, $telefone);
$stmt->bindParam(9, $email);
$stmt->execute();
$conn->commit();

 

use

 

$stmt = $conn->prepare( $sql );
$stmt->execute( array( 1, 2, 3, 4, 5, 6, 7, 8, 9 ) ); // ou seja, vai inserir nos seus respectivos ? os valores 1, 2, 3 .. etc

Compartilhar este post


Link para o post
Compartilhar em outros sites

apareceu a mesma mensagem: PDOException: There is no active transaction indicando PDO->commit( )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso assim :

 

try{

$this->pdo			= new PDO("mysql:host={$this->servidor};dbname={$this->banco}","{$this->host}","{$this->senha}");

}catch( PDOException $e ){

print( $e->getMessage() . " - [ " . $e->getCode() . " ] " );	

}

$args                           = array("Felipe", "Grêmio");
$this->qry			= $this->pdo->prepare( $sql );
$this->qry->execute( $args );

 

e funfa...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso assim :

 

try{

$this->pdo			= new PDO("mysql:host={$this->servidor};dbname={$this->banco}","{$this->host}","{$this->senha}");

}catch( PDOException $e ){

print( $e->getMessage() . " - [ " . $e->getCode() . " ] " );	

}

$args                           = array("Felipe", "Grêmio");
$this->qry			= $this->pdo->prepare( $sql );
$this->qry->execute( $args );

 

e funfa...

 

cremio manda com a query insert que você usa.pode ser?

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.