我的表中有一个自动递增 ID 列,当我使用 PHP 插入记录时,它工作得很好。我必须每小时使用 DELETE 语句从该表中删除记录。我更改了 PHP.ini 文件并重新启动了机器。由于某种原因,自动递增 ID 再次从“1”开始。当我重新启动机器时,表中没有记录。我正在使用在 IIS 下运行的 PHP 5.3.8 和 MySQL 5.5.21。如果有任何建议,请告诉我。这是我的表架构。
CREATE TABLE `test_table` (
`test_id` int(11) NOT NULL AUTO_INCREMENT,
`test_date` datetime DEFAULT NULL,
`test_location` varchar(2000) NOT NULL,
`test_summary` varchar(4000) NOT NULL,
`create_dtm` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`test_id`)
) ENGINE=InnoDB
这是我的插入查询
$Sql = "INSERT INTO test_table(test_date, test_location, test_summary) VALUES ('" .sDate. "', '" .$location. "', '" .$summary. "')";
$Result = mysql_query($Sql) or die(mysql_error());
$new_id = MySql_Insert_Id();
这里是删除。
$Sql1 = "DELETE FROM test_table";
$Result1 = mysql_query($Sql1) or die(mysql_error());
最佳答案
使用不带 where 子句的 DELETE 与 TRUNCATE 表相同,因此它们都会重置表的 Next AutoIndex 值。 (这是人们通常想要/期望的)
在您的情况下可能可以使用类似以下内容来解决此问题:
mysql_query( sprintf( "ALTER TABLE tbl_name AUTO_INCREMENT = %d", mysql_insert_id() + 1 ) );
(如果 DELETE 清除了插入值,那么您只需要在 DELETE/TRUNCATE 之前缓存它)
关于php - MySQL自动增量ID的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484608/