ele me retorna o Id mas não faz o cadastro a cada cadastro ele conta + 1id no banco so que não faz o registro.. n aparece os dados somente o aumento de Index no autoincrement se eu tirar e fizer o registro, o registro aparece no banco normal so que com o Id que estava por vir mim ... vamos supor
eu fiz o teste sem o lastInsertId 3 vezes
então tenho 3 registro
1
2
3
agora fiz mais 3 teste com ele
(não tenho nad novo)
agora fiz o teste novamente + 1 sem o lastInsertId
1237
agora tenho 4 registro e o registro-4 é Id7 que é a sequencia do Increment.
para fazer o cadastro do o seguinte comando.
include '_a/_class/class.Cadastro.php';
$teste = New Cadastro();
$string = array('nome'=>'Teste','email'=>'email@email.com');
$ultimoId = $teste->insert('usuarios', $string);
echo $ultimoId;
minha class de conexao é esta.
<?php
########################################################
######Configuração para conectar ao Banco de Dados.#####
########################################################
class Conexao extends PDO {
private static $instancia;
public function Conexao($dsn, $username = "", $password = "") {
// O construtro abaixo é o do PDO
parent::__construct($dsn, $username, $password);
}
public static function getInstance() {
// Se o a instancia não existe eu faço uma
if(!isset( self::$instancia )){
try {
self::$instancia = new Conexao("mysql:host=localhost;dbname=test", "root", "");
self::$instancia->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch ( Exception $e ) {
echo 'Erro ao conectar';
exit ();
}
}
// Se já existe instancia na memória eu retorno ela
return self::$instancia;
}
}
?>
Pergunta
JaguA
Bem eu to com um problema bem chato de resolver, preciso que apos fazer um cadastro me retorne o Id do qual foi feito esse cadastro.
sendo asim o lastInsertId...
bem já pesquisei bastante a respeito dele e sendo rapido eu so preciso ter minha conexao istanciada e pedir a funcao do lastInsertId.
minha funcao de cadastro é esta.
public function insert($tabela, $string) { $func = new FuncoesDB; $func->setTabela($tabela); $func->setCampos($string); $func->setValues($string); //$this->valores = $func->setValores($string); $this->string = $func->cadastrar(); $oConexao = Conexao::getInstance(); try{ //executa a instrução de consulta $oConexao->beginTransaction(); $stmt = $oConexao->prepare("$this->string")->execute($string); $oConexao->commit(); }catch (PDOException $e){ $oConexao->rollBack(); echo $e->getMessage(); } }para uma exemplificação melhor este comando$stmt = $oConexao->prepare("$this->string")->execute($string);é isso sem as variaveis.$stmt = $oConexao->prepare("INSERT INTO usuarios (nome,email) VALUES (:nome, :email) ")->execute('nome'=>'Jagua','email'=>'jagua@email.com');beleza... desta forma esta funcionando tranquilo se eu coloco a seguinte linha ele me retorna o Id mas não faz o cadastro a cada cadastro ele conta + 1id no banco so que não faz o registro.. n aparece os dados somente o aumento de Index no autoincrement se eu tirar e fizer o registro, o registro aparece no banco normal so que com o Id que estava por vir mim ... vamos supor eu fiz o teste sem o lastInsertId 3 vezes então tenho 3 registro 1 2 3 agora fiz mais 3 teste com ele (não tenho nad novo) agora fiz o teste novamente + 1 sem o lastInsertId 1237 agora tenho 4 registro e o registro-4 é Id7 que é a sequencia do Increment. para fazer o cadastro do o seguinte comando.include '_a/_class/class.Cadastro.php'; $teste = New Cadastro(); $string = array('nome'=>'Teste','email'=>'email@email.com'); $ultimoId = $teste->insert('usuarios', $string); echo $ultimoId;minha class de conexao é esta.<?php ######################################################## ######Configuração para conectar ao Banco de Dados.##### ######################################################## class Conexao extends PDO { private static $instancia; public function Conexao($dsn, $username = "", $password = "") { // O construtro abaixo é o do PDO parent::__construct($dsn, $username, $password); } public static function getInstance() { // Se o a instancia não existe eu faço uma if(!isset( self::$instancia )){ try { self::$instancia = new Conexao("mysql:host=localhost;dbname=test", "root", ""); self::$instancia->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch ( Exception $e ) { echo 'Erro ao conectar'; exit (); } } // Se já existe instancia na memória eu retorno ela return self::$instancia; } } ?>Editado por JaguALink para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.