junaooaks 3 Denunciar post Postado Março 23, 2011 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.41a 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
gremio10 14 Denunciar post Postado Março 23, 2011 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
Leozitho 81 Denunciar post Postado Março 23, 2011 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
junaooaks 3 Denunciar post Postado Março 23, 2011 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
gremio10 14 Denunciar post Postado Março 23, 2011 Testou como eu te passei cara ? Compartilhar este post Link para o post Compartilhar em outros sites
vieira.rrafael 2 Denunciar post Postado Março 23, 2011 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
junaooaks 3 Denunciar post Postado Março 23, 2011 Testou como eu te passei cara ? sim senhor sim :D so nao funcinou Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Março 23, 2011 $pdo = new PDO("mysql:host=$server;dbname=$db", $user, $pass); Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Março 23, 2011 $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
Leozitho 81 Denunciar post Postado Março 23, 2011 Ou você faz como já estava fazendo ou faz como o gremio10 sugeriu. Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Março 24, 2011 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
gremio10 14 Denunciar post Postado Março 24, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Março 24, 2011 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 14 Denunciar post Postado Março 24, 2011 Tu chegou a testar como eu coloqueri aqui #2 ? poste seu código novamente, com as modificações... Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Março 24, 2011 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
gremio10 14 Denunciar post Postado Março 24, 2011 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
junaooaks 3 Denunciar post Postado Março 24, 2011 apareceu a mesma mensagem: PDOException: There is no active transaction indicando PDO->commit( ) Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Março 24, 2011 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
junaooaks 3 Denunciar post Postado Março 24, 2011 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
gremio10 14 Denunciar post Postado Março 24, 2011 como assim cara ? esse é o código, tu quer a Query ? INSERT INTO meuNome (nome, time) VALUES (? , ?) Compartilhar este post Link para o post Compartilhar em outros sites