7

以下のコード (より大きなクラスのスニプレット) を使用して、最後に挿入された ID を取得する方法をたくさん試しましたが、あきらめました。

PDO lastInsertId を機能させる方法を知っている人はいますか?

前もって感謝します。

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

1 に答える 1

12

あなたのコード スニペットには、問題に影響を与える可能性のある小さな矛盾がいくつか見られました。たとえば、使用する SQL ステートメントを準備するコードでは、

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

$thisキーワードに注意してください。次に、ID を取得するために、次のように呼び出します。

$dbh->lastInsertId();

使ってみましたか、

$this->dbh->lastInsertId();

于 2010-04-20T14:12:10.610 に答える