2010-04-20 8 views
7

J'ai essayé de nombreuses façons d'obtenir le dernier ID inséré avec le code ci-dessous (extrait de la classe plus grande) et maintenant j'ai abandonné.PDO lastInsertId problèmes, php

Est-ce que quelqu'un sait comment utiliser PDO lastInsertId pour fonctionner?

Merci d'avance.

$sql = "INSERT INTO auth (surname, forename, email, mobile, mobilepin, actlink, regdate) VALUES (:surname, :forename, :email, :mobile, :mobpin, :actlink, NOW())"; 
$stmt = $this->dbh->prepare($sql); 
if(!$stmt) { 
return "st"; 
} 

$stmt->bindParam(':surname', $this->surname); 
$stmt->bindParam(':forename', $this->forename); 
$stmt->bindParam(':email', $this->email); 
$stmt->bindParam(':mobile', $this->mobile); 
$stmt->bindParam(':mobpin', $this->mobilePin); 
$stmt->bindParam(':actlink', $this->actlink); 

$result = $stmt->execute(); 
//return var_dump($result); 
$arr = array(); 
$arr = $stmt->errorInfo(); 
$_SESSION['record'] = 'OK' . $dbh->lastInsertId(); 
$arr .= $_SESSION['record']; 
return $arr; 
+0

Pourriez-vous mentionner également la façon dont il ne fonctionne pas? En disant simplement que cela ne fonctionne pas, cela amène d'autres personnes à supposer ce que le problème peut être. Avec plus d'informations viennent plus de réponses. –

Répondre

12

Dans votre extrait de code, j'ai vu quelques incohérences mineures qui peuvent avoir un effet sur le problème. Pour un exemple, dans le code pour préparer votre instruction SQL que vous utilisez,

$stmt = $this->dbh->prepare($sql); 

Notez le mot-clé $this. Ensuite, pour récupérer l'ID, vous appelez,

$dbh->lastInsertId(); 

Avez-vous essayé d'utiliser,

$this->dbh->lastInsertId();