tags:

views:

218

answers:

6

When I create a new entry in my MySQL database, I'd like the query to return the id of the table that was just created. If it cannot do this, is there another way to find out the this id? The reason I want to do this is so I can link a new row to the row that spawned it (and there's no guarantee that they're consecutive)

+10  A: 

You mean last autoincrement id?

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());
?>
Alekc
+6  A: 

You want mysql_insert_id()

John Rasch
+2  A: 

Do you mean the ID of the record you have just inserted into a table, if so you are looking for mysql_insert_id.

Richard Slater
+2  A: 

have a look at http://us3.php.net/mysql_insert_id

John Boker
A: 

You have LAST_INSERT_ID() in My SQL (@@IDENTITY in ms sql) and mysql_insert_id in php.

Personally though, I try to avoid auto increments / identity columns and generate my id's in other ways. Amongst other reasons, because they make inserts into multiple tables harder.

/B

Brimstedt
+1  A: 

Use the mysql_insert_id function... http://php.net/mysql_insert_id

Excuse the underscores converting the 'insert' into italics... follow the link and you should be fine.

Narcissus