Re: How to get last insert id safely?
| From: | Mazzu | Date: | Thu, 06 Dec 2007 02:45:57 +0000 |
| Subject: | Re: How to get last insert id safely? | ||
| References: | 1 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-44394@lists.php.net to get a copy of this message | ||
If the first query doesn't fail you can be sure that last_insert_id()
for A while return the ID of his name because
1) "The ID that was generated is maintained in the server on a
per-connection basis. This means that the value returned by the function
to a given client is the first AUTO_INCREMENT value generated for most
recent statement affecting an AUTO_INCREMENT column by that client."
(
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
)
2) When a script use mysql_pconnect() it take a connection and then php
marked this connection as reserved until the script ends.
(http://www.php.net/manual/en/features.persistent-connections.php)
Note : For Apache 1, it's ok according to the doc ("They cause the child
process to simply connect only once for its entire lifespan, instead of
every time it processes a page that requires connecting to the SQL server.
This means that for every child that opened a persistent connection will
have its own open persistent connection to the server.") and I can't
find if it should work also for Apache 2.0 and 2.2
For your information :
http://www.mysqlperformanceblog.com/2006/11/12/are-php-persistent-connections-evil/
"Jacky" <jacky.hf@gmail.com> wrote:
> Hi All,
> How to get last insert id safely in php with persistent connection to
> mysql?because there may be larger concurrence requests to the php to query
> insert statements.Example,the php query following two sql statements:
>
> mysql_query("insert into tb(id,name) values(null,$username)");
> $res = mysql_query("select last_insert_id()");
>
> And in any time,user A insert one row to the table tb,and the same time
> before user A query last_insert_id(),user B insert another row to the same
> table too.
> In this situation,will user A or B query last_insert_id() function get the
> correct id for he/her just insert?
>
> Any ideas?Thanks!
>
> Regards
> Jacky