Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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中设置id列_Php_Mysql - Fatal编程技术网

如何在PHP中设置id列

如何在PHP中设置id列,php,mysql,Php,Mysql,我可以使用phpmyadmin中的以下sql代码在表中设置id列: SET @i = 0; UPDATE albums SET id=(@i:=@i+1); 这将为id列中的每一行提供一个连续的数字。 这可能会让我感到非常基本,但如何在PHP中运行这段代码呢 我试过: mysql_query('SET @i = 0; UPDATE albums SET id=(@i:=@i+1);'); 但那没什么用 谢谢你的建议! 最佳Sam将单个更新查询与联接一起使用如何 mysql_query("up

我可以使用phpmyadmin中的以下sql代码在表中设置id列:

SET @i = 0;
UPDATE albums SET id=(@i:=@i+1);
这将为id列中的每一行提供一个连续的数字。 这可能会让我感到非常基本,但如何在PHP中运行这段代码呢

我试过:

mysql_query('SET @i = 0;
UPDATE albums SET id=(@i:=@i+1);');
但那没什么用

谢谢你的建议!
最佳Sam

将单个更新查询与联接一起使用如何

mysql_query("update albums 
join(SELECT @i:=0) t
SET id=(@i:=@i+1)");
但若您可以更改表的模式,然后生成id,那个就更好了

mysql\u query()
发送一个唯一的查询(不支持多个查询),因此您的代码无法工作。您可以使用不同的
mysql\u query()
进行尝试

由于PHP 5.5.0中不推荐使用mysql_query(),并且mysqli_query()不支持多个查询,因此最好的答案是:

mysqli_multi_query('set @i = 0; update albums set id = (@i:=@i+1);');

你为什么不干脆用一个自动递增的id列呢?我需要一个连续的列表,以便给每个主菜一个数字。自动递增总是从它离开的地方开始,不考虑删除的主菜。为什么你需要一个连续的数字?PK不必是连续的,简单地说是唯一的,否则它不会被纯粹用作PK ID的顺序是任意的?每次插入或删除一行时都会重新生成完整的表,可能会更改现有的ID吗?该功能的使用案例是什么?我想在我创建的每个相册上“附加”一个数字,并显示该数字。我无法在PHP中实现这一点,因为数字应该独立于SORT BY方法而存在,并且标准循环将在排序后基于结果进行排序。事实上,在添加或删除相册后,我将更新ID列。如果这真的很奇怪,我很想听听合适的替代方案。。现在我将开始使用mysqli_multi_query(),谢谢+1
mysqli_multi_query('set @i = 0; update albums set id = (@i:=@i+1);');