PHP: PDO->lastInsertId() - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

PDO->prepare() PDO->getAvailableDrivers()

Last updated: Fri, 26 Jan 2007

view this page in

# PDO->lastInsertId()

(no version information, might be only in CVS)

PDO->lastInsertId() -- Returns the ID of the last inserted row or sequence value

## Описание

class PDO {
string lastInsertId ( [string name] )
}

Returns the ID of the last inserted row, or the last value from a sequence object, depending on the underlying driver. For example, PDO_PGSQL() requires you to specify the name of a sequence object for the `name` parameter.

> Замечание: This method may not return a meaningful or consistent result across different PDO drivers, because the underlying database may not even support the notion of auto-increment fields or sequences.

## Список параметров

`name`

  Name of the sequence object from which the ID should be returned.

## Возвращаемые значения

If a sequence name was not specified for the `name` parameter, PDO->lastInsertId() returns a string representing the row ID of the last row that was inserted into the database.

If a sequence name was specified for the `name` parameter, PDO->lastInsertId() returns a string representing the last value retrieved from the specified sequence object.

If the PDO driver does not support this capability, PDO->lastInsertId() triggers an `IM001` SQLSTATE.

add a note User Contributed Notes
PDO->lastInsertId()
Dennis Du Krøger
22-Jan-2007 02:40
`It should be noted that, at least for MySQL using InnoDB tables, with transactions PDO will report the last insert id as 0 after the commit, the real ids are only reported before committing.
(As a side note, MySQL keeps the ID number incremented after a rollback).`
dave at dtracorp dot com
18-Aug-2006 05:34
`in case anyone was wondering
something like
$val = 5;
$sql = "REPLACE table (column) VALUES (:val)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':val', $val, PDO::PARAM_INT);
$stmt->execute();
$lastId = $dbh->lastInsertId();
will return the last inserted id, whether the record was replaced or simply inserted
the REPLACE syntax, simply inserts, or deletes > inserts
so lastInsertId() still works
refer to http://mysql.com/doc/refman/5.0/en/replace.html
for REPLACE usage`
opik at opik dot ru
20-Dec-2005 06:10
`Simple example:
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'passowd');
$smf = $dbh->prepare("INSERT INTO test (`numer`) VALUES (?)");
$a = mt_rand(1, 100);
$smf->bindParam(1, $a, PDO::PARAM_INT);
$smf->execute();
print $dbh->lastInsertId().'<br />';
$a = mt_rand(1, 100);
$smf->bindParam(1, $a, PDO::PARAM_INT);
$smf->execute();
print $dbh->lastInsertId();
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>`
add a note
PDO->prepare() PDO->getAvailableDrivers()

Last updated: Fri, 26 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST