我有一个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不是自动增量。
发布于 2017-04-18 20:55:44
删除顺序时,不要重新编号。
假设你的应用程序给用户发电子邮件,告诉他们“你的订单是25”,然后当他们访问你的网站时,结果发现这些订单已经被重新编号,他们的订单现在是24。太混乱了。
id不应该是连续的。它们不是序数。
我在@splash58 58的评论中看到了这个建议,但这真的很昂贵。如果使用orderId > $delOrder的表中有1000万行呢?
PS:您的代码容易受到SQL注入的影响。至少将id强制转换为整数。
$del = (int) $_GET['del'];但是最好使用查询参数:How can I prevent SQL injection in PHP?
发布于 2017-04-18 21:17:12
orderId用于对行进行排序。我要做的是做一个select查询来获得最后一行,只选择orderId列,然后为插入的新行增加一个。
SELECT orderId FROM table ORDER BY id DESC LIMIT 0,1发布于 2017-04-18 21:43:04
试试这个..。
UPDATE `MYTABLE `, (SELECT @c := 0) c SET `MYTABLE `.`orderID` = (@c := @c + 1);https://stackoverflow.com/questions/43481761
复制相似问题