Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql数据库自动递增id不按升序递增_Php_Mysql_Unique - Fatal编程技术网

Php Mysql数据库自动递增id不按升序递增

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_

我在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_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')");