PHP:从mysql中删除并重置MYSQL数据库中的列?

时间:2017-04-18 20:37:39

标签: php mysql database

我有一个MYSQL数据库,如下所示:

id   name   orderID

19   James    0
20  Chrales   1
24  Michelle  2

...

我有一个PHP代码从mysql数据库中删除记录,它工作正常。

这是删除代码:

if (isset($_GET['del'])) {

    $del = $_GET['del'];


$sql = "DELETE FROM MYTABLE WHERE id='$del'";
$query = mysqli_query($db_conx, $sql);
printf("<script>location.href='index.php'</script>");   
exit();

}

我需要做的是每次从MYSQL数据库中删除记录时重置orderID列。

所以,orderID总是,0,1,2,3,4,5等等......

有人可以对此进行讨论吗?

任何帮助都将不胜感激。

修改

orderID不是AUTO INCREMENT。

3 个答案:

答案 0 :(得分:0)

删除订单时,请勿重新编号。

假设您的应用通过电子邮件向用户发送电子邮件,告诉他们“您的订单是25”,然后当他们访问您的网站时,结果显示订单已经重新编号,而且他们的订单现在是24。很多混乱。

id不是连续的。它们不是序数。

我在@ splash58的评论中看到了这个建议,但这真的很贵。如果表格中有1000万行orderId > $delOrder怎么办?

PS:您的代码容易受到SQL注入攻击。至少将id转换为整数。

$del = (int) $_GET['del'];

但最好使用查询参数:this answer

答案 1 :(得分:0)

看作orderId用于对行进行排序。我要做的是做一个select查询来获取最后一行,只选择orderId列,然后为你插入的新行增加一个。

SELECT orderId FROM table ORDER BY id DESC LIMIT 0,1

答案 2 :(得分:0)

试试这个..

UPDATE `MYTABLE `, (SELECT @c := 0) c SET `MYTABLE `.`orderID` = (@c := @c + 1);