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)
views:
218answers:
6
+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
2009-03-21 20:34:47
+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
2009-03-21 20:35:46
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
2009-03-21 20:36:09
+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
2009-03-21 20:37:44