基本信息
(PHP 3, PHP 4, PHP 5)
mysql_insert_id -- 取得上一步 INSERT 操作產生的 ID
說明
int mysql_insert_id( [resource link_identifier] )
如果上一查詢沒有產生 AUTO_INCREMENT 的值,則 mysql_insert_id()返回 0。如果需要保存該值以後使用,要確保在產生了值的查詢之後立即調用 mysql_insert_id()。
注意
MySQL 中的 SQL 函式 LAST_INSERT_ID()總是保存著最新產生的 AUTO_INCREMENT 值,並且不會在查詢語句之間被重置。
警告
mysql_insert_id()將 MySQL 內部的 C API 函式 mysql_insert_id()的返回值轉換成 long(PHP 中命名為 int)。如果 AUTO_INCREMENT 的列的類型是 BIGINT,則 mysql_insert_id()返回的值將不正確。可以在 SQL 查詢中用 MySQL 內部的 SQL 函式 LAST_INSERT_ID()來替代。
例子一:]mysql_insert_id()]例子b]b]
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
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());
?>
例子二
<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db("test_db",$con);
$sql = "INSERT INTO person VALUES ('Carter','Thomas','Beijing')";
$result = mysql_query($sql,$con);
echo "ID of last inserted record is: " . mysql_insert_id();
mysql_close($con);
?>
輸出類似:
ID of last inserted record is: 5
實用功能
<?php
$host = "localhost"; //伺服器
$username = "hello"; //用戶名;
$password = "321"; //密碼
$database = "dataname"; //資料庫
function insert_id($sql)
{
global $host,$username,$password,$sql;
$con = mysql_connect($host,username,$password);
mysql_db_query($database,$sql,$conn);
$id = mysql_insert_id();
return $id;
}
echo insert_id("INSERT INTO person VALUES ('Carter','Thomas','Beijing')";
?>
輸出類似:
ID of last inserted record is: 5
同時執行了插入數據的效果