Проблемы с идентификатором lastInsertId PDO, php

#php #mysql #forms #pdo

#php #pdo #lastinsertid

Вопрос:

Я перепробовал множество способов получить последний вставленный идентификатор с помощью приведенного ниже кода (фрагмент из более крупного класса), и теперь я сдался.

Кто-нибудь знает, как заставить работать идентификатор lastInsertId PDO?

Заранее спасибо.

     $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;
  

Комментарии:

1. Не могли бы вы также упомянуть, как это не работает? Просто сказав, что это не работает, другие люди предполагают, в чем может быть проблема. С дополнительной информацией приходит больше ответов.

Ответ №1:

В вашем фрагменте кода я увидел некоторые незначительные несоответствия, которые могут повлиять на проблему. Например, в коде для подготовки вашего оператора SQL вы используете,

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

Обратите внимание на $this ключевое слово. Затем, чтобы получить идентификатор, вы вызываете,

 $dbh->lastInsertId();
  

Вы пробовали использовать,

$this->dbh->lastInsertId();