我有一个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。
答案 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);