Php Mysql数据库自动递增id不按升序递增
我在mysql phpmyadmin中创建了一个表,我为“id”提供了自动递增,并为image创建了一个列,它不应该是相同id的相同image,这就是为什么我将其更改为unique。 现在的问题是,id已经自动递增,但如果我启动插入查询,它的插入id号为-1到10,下一次我将再次启动查询,它的插入id号为:-40到50,现在直接从1000到1010,依此类推。 我使用的是简单查询:-Php Mysql数据库自动递增id不按升序递增,php,mysql,unique,Php,Mysql,Unique,我在mysql phpmyadmin中创建了一个表,我为“id”提供了自动递增,并为image创建了一个列,它不应该是相同id的相同image,这就是为什么我将其更改为unique。 现在的问题是,id已经自动递增,但如果我启动插入查询,它的插入id号为-1到10,下一次我将再次启动查询,它的插入id号为:-40到50,现在直接从1000到1010,依此类推。 我使用的是简单查询:- mysqli_query($con,"insert into Wheel_Place_Images(place_
mysqli_query($con,"insert into Wheel_Place_Images(place_image_url,creation_date,last_modification_date,status)values('$image_url','$date','$date','1')");
我不明白这里有什么问题 您可以使用以下代码在MySQL中将初始值重置或设置为自动递增 使用以下命令:
ALTER TABLE `Wheel_Place_Images` AUTO_INCREMENT=1001;
或者,如果尚未添加id列,也可以添加它
ALTER TABLE `Wheel_Place_Images` ADD place_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD INDEX (place_id);
您不需要手动插入place\u id
mysqli_query($con,"INSERT INTO `Wheel_Place_Images`
(place_image_url,creation_date,last_modification_date,status)
Values ('$image_url','$date','$date','1')");
更新的答案
我有一个非常简单的技巧来避免自动递增ID中的间隙
只需从id字段中获取最大高值,然后向其添加1
$row = mysqli_query($con, "SELECT MAX(place_id) AS `maxid` FROM `Wheel_Place_Images`");
if ($row) {
$maxid = $row->maxid + 1;
}
然后
place\u id
是具有自动递增功能的唯一id吗?是的,Epodax,place\u id是具有自动递增功能的主键。如果使用自动递增功能,则无需插入id本身-这将自动发生。这不是“place_I'd”吗?如果这是一个主键,那么您不应该依赖它的值。这听起来像是自动增量正在工作,但会出现间隙。如果像INSERT这样的命令。。。使用忽略重复-当检测到重复时,这些将始终导致间隙。你也不应该手动插入值-你从哪里获得要添加的值?嘿,PaulF,实际上我是从google api获得这些图像的。嘿,Hassan,谢谢你的回复,实际上我错写了,但实际上它是自动插入的。我已经更新了我的代码,现在检查一下,抱歉出错。@Neha如果你觉得我的答案有用,你可以接受,我接受了哈桑。但是你有什么解决办法吗???@Neha你想在place\u image\u url
字段中保存相同的插入id吗?没有哈桑,在“place\u image\u url”中,这个字段是唯一的,我必须插入图像的url,问题是place\u id是自动递增的,它取1到10的间隔数,然后直接取50到60,就像这样,应该是正确的数字。
mysqli_query($con,"INSERT INTO `Wheel_Place_Images`
(place_id, place_image_url,creation_date,last_modification_date,status)
Values ('$maxid','$image_url','$date','$date','1')");