gpt4 book ai didi

php - 为什么php函数mysql_insert_id回滚后仍然自动递增?

转载 作者:行者123 更新时间:2023-11-29 14:34:44 25 4
gpt4 key购买 nike

Possible Duplicate:
MySQL AUTO_INCREMENT does not ROLLBACK

<?php
header("Content-Type:text/html; charset=utf-8") ;

$conn = mysql_connect('127.0.0.1', 'root', '123456') ;

mysql_select_db('test') ;

mysql_query('set autocommit=0') ;
mysql_query('start transaction') ;

try
{
$sql = "insert into `user`(`username`, `password`) values('demo', 'demopassword')" ;
echo $sql, '<br/>' ;
$rs = mysql_query($sql) ;
echo mysql_affected_rows(), '<br/>' ;
if (mysql_affected_rows() > 0)
{
$uid = mysql_insert_id() ;
echo $uid, '<br/>' ;
throw new Exception('conn exception : ' . mysql_error()) ;
}
else
{
throw new Exception('conn exception : ' . mysql_error()) ;
}
}
catch(Exception $e)
{
echo $e->getMessage(), '<br/>' ;
echo "rollback", "<br/>" ;
mysql_query('rollback') or die(mysql_error()) ;
}

if (!$conn)
{
mysql_close($conn) ;
}
?>

抱歉..我的英语很差...

参见上面的代码...当我刷新该页面时...uid 变量将自动递增..为什么?

希望你能理解我...请帮忙..谢谢

最佳答案

为什么这是一个问题? MySQL 将必须生成自动增量值来尝试插入,因此即使事务失败(在 key 生成之后),该 key 仍将有效地“使用”。如果我没记错的话,您可以对表进行清理以回收这些使用过的 key 。

关于php - 为什么php函数mysql_insert_id回滚后仍然自动递增?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9311558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com