Re: DB_Object->insert() not returning ID

From: Date: Mon, 29 Nov 2004 23:19:15 +0000
Subject: Re: DB_Object->insert() not returning ID
References: 1 2 3  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-15910@lists.php.net to get a copy of this message
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Mon, Nov 15, 2004 at 10:46:12AM -0800, Justin Patrin wrote: > On Sun, 14 Nov 2004 21:23:06 -0800, Ken Restivo <ken@restivo.org> wrote: > > On Sun, Nov 14, 2004 at 07:36:41PM -0800, Ken Restivo wrote: > > > One more: inserts succeed but always return 1 as an ID. > > > > > > I supposed I can hack around this with a raw query for last_insert_id(), but the docs > > > say insert() should return this. > > > > > > > OK well I did this, but I'm still kind of suspicious about why I had to: > > > > function lastInsertID($obj) > > { > > $db =& $obj->getDatabaseConnection(); > > > > $data =& $db->getOne('select last_insert_id()'); > > if (DB::isError($data)) { > > die($data->getMessage()); > > } > > return $data; > > } > > > > Looking at the DB_DataObject code, insert() says it returns true, > false, or 0. Looks like the online docs are wrong. Look at the online > API docs. > Thanks. The API docs also have the wrong information in the main body (about returning the last inserted ID), but with a note that says "mysql-specific? fixme". My fault for missing that, I guess. It does describe the return value correctly. I read somewhere that the inserted ID gets inserted into the object after the ->insert(). Is that a reliable, safe way to get the last inserted ID? I think what I'm saying is, I can't believe that I have to write a utility function (and then subclass DBDO or copy/paste it) to get the last inserted ID. It seems like a very common thing and somewhere in the DBDO docs I must have overlooked the "officially-approved" way to do it. - -ken - -- - --------------- The world's most affordable web hosting. http://www.nearlyfreespeech.net -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) iD8DBQFBq65ze8HF+6xeOIcRAkCIAJwPbHMjYXg7CpncXhMJST48VsrWywCfYCyc oqlBnT2UNdGrPBk9n7AbILs= =GgM5 -----END PGP SIGNATURE-----

« previous php.pear.general (#15910) next »