MYSQL:获取自增字段值的SQL查询

3

我有一张表,主键是id并且是自动递增的。现在当我插入新记录时,我需要获取更新记录所用的id。我该怎么做?如果我使用以下查询语句...

select max(id) from table_name

执行后,我可以获得id。但是我能确定它是刚刚插入的记录的id吗?因为许多人将同时使用该应用程序。
我正在使用php和mysql。
有人能为我提供一个带有mysql的php示例代码片段吗?

3
看起来你刚接触 PHP 和 MySQL。你会发现 PHP 手册 (http://ca2.php.net/manual/zh/index.php) 非常宝贵且易懂。MySQL 手册(http://dev.mysql.com/doc/)也非常详尽。 - dnagirl
7个回答

5
如果您想查找自动递增列的最新ID,只需在插入查询之后立即运行 mysql_insert_id() 函数即可。
例如:
//--connection already made to database
//--now run your INSERT query on the table
mysql_query("INSERT INTO table_name (foo_column) VALUES ('everlong')");

//-- right after that previous query, you run this
$newest_id = mysql_insert_id();

现在$newest_id将包含最新插入行的ID。


3

2
在SQL中,您可以这样做。
SELECT LAST_INSERT_ID() 

在php中,您可以调用 mysql_insert_id()

1

使用相同的连接,接下来运行此查询:

SELECT LAST_INSERT_ID()

你的数据库驱动程序可能有一个方便的函数来处理这个问题。

阅读文档。


你是指我使用相同的连接是什么意思? 你能给我一个使用PHP和MySQL的示例代码吗? - user177785
相同的连接意味着在关闭或启动另一个与数据库的连接之前保持现有连接。 - random

1

如果您已经连接到服务器并选择了数据库,可以使用此功能来获取下一个自动增量值的值;

$query = "SHOW TABLE STATUS LIKE 'tbl_name'";
$result = mysql_query($query);
$auto_incr_val = mysql_result($result, 0, 'Auto_increment');
echo $auto_incr_val;

这将为您提供在auto_increment列中下一个使用的值。 编辑:对不起...那不是你的问题...


0

这是 PHP 的示例:

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

mysql_query("YOUR QUERY HERE", $link);
$inserted_id = mysql_insert_id($link));

0

查询

show create table

包含你在最后一个字符串中所需的信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接