动态更改 mysql 中的自动增量
dynamically change the auto-increment in mysql
我有一个表格可以将一些数据添加到 table.and 我有一个 php 文件打印出 data.in 此页面的每一行 link 是打印出来,当您单击它时,您将进入一个删除该单行的页面。
此页面名为 delete.php
但是有一个 problem:when 单行被删除,如果我再添加一行,自动增量将打印错误!
下面的例子如果你删除第 7 行并且打印了 13 行,当你添加另一行时打印的自动增量列将是这样的:
1,2,...,12,14
这是delete.php的代码:
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
else {
echo "" . mysqli_error($conn);
}
$id=$_GET['id'];
$sql = "DELETE FROM qolak WHERE id='$id'";
if (mysqli_query($conn, $sql)) {
echo "";
for($i=$id+1;$i<=1000;$i++){
$j=$i-1;
$sql = "UPDATE qolak SET id='$j' WHERE id='$i'";
//
if (mysqli_query($conn, $sql)) {
echo "";
} else {
echo "" . mysqli_error($conn);
}
}
}
$rownum=$_GET['rownum'];
$rownum+=1;
$ssql = "ALTER TABLE qolak AUTO_INCREMENT ='$rownum'";
if (mysqli_query($conn, $ssql)) {
echo "";
} else {
echo "" . mysqli_error($conn);
}
mysqli_close($conn);
这是我的问题:
$ssql = "ALTER TABLE qolak AUTO_INCREMENT ='$rownum'";
此查询不会动态更改自动增量
请帮忙!!!
选择的方法不符合基本问题:
您必须区分作为 ID 的自动递增和作为一种人类可读编号的输出。分开这个,因为自动递增永远不会连续,这是设计使然!
您永远不应该尝试手动更改自动增量值。期间.
如果您想要一些连续的行编号,请在 html 上添加一个额外的列(不在数据库中,因为那里没有 "row numbers"!)
用 ID = 13
删除第 7 行将导致第 8 行成为新的第 7 行,依此类推。
我有一个表格可以将一些数据添加到 table.and 我有一个 php 文件打印出 data.in 此页面的每一行 link 是打印出来,当您单击它时,您将进入一个删除该单行的页面。 此页面名为 delete.php 但是有一个 problem:when 单行被删除,如果我再添加一行,自动增量将打印错误! 下面的例子如果你删除第 7 行并且打印了 13 行,当你添加另一行时打印的自动增量列将是这样的: 1,2,...,12,14
这是delete.php的代码:
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
else {
echo "" . mysqli_error($conn);
}
$id=$_GET['id'];
$sql = "DELETE FROM qolak WHERE id='$id'";
if (mysqli_query($conn, $sql)) {
echo "";
for($i=$id+1;$i<=1000;$i++){
$j=$i-1;
$sql = "UPDATE qolak SET id='$j' WHERE id='$i'";
//
if (mysqli_query($conn, $sql)) {
echo "";
} else {
echo "" . mysqli_error($conn);
}
}
}
$rownum=$_GET['rownum'];
$rownum+=1;
$ssql = "ALTER TABLE qolak AUTO_INCREMENT ='$rownum'";
if (mysqli_query($conn, $ssql)) {
echo "";
} else {
echo "" . mysqli_error($conn);
}
mysqli_close($conn);
这是我的问题:
$ssql = "ALTER TABLE qolak AUTO_INCREMENT ='$rownum'";
此查询不会动态更改自动增量 请帮忙!!!
选择的方法不符合基本问题:
您必须区分作为 ID 的自动递增和作为一种人类可读编号的输出。分开这个,因为自动递增永远不会连续,这是设计使然!
您永远不应该尝试手动更改自动增量值。期间.
如果您想要一些连续的行编号,请在 html 上添加一个额外的列(不在数据库中,因为那里没有 "row numbers"!)
用 ID = 13
删除第 7 行将导致第 8 行成为新的第 7 行,依此类推。