首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:从mysql中删除并重置MYSQL数据库中的列?

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

Stack Overflow用户
提问于 2017-04-18 20:37:38
回答 3查看 198关注 0票数 1

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

代码语言:javascript
复制
id   name   orderID

19   James    0
20  Chrales   1
24  Michelle  2

...

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

这是删除以下内容的代码:

代码语言:javascript
复制
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不是自动增量。

EN

回答 3

Stack Overflow用户

发布于 2017-04-18 20:55:44

删除顺序时,不要重新编号。

假设你的应用程序给用户发电子邮件,告诉他们“你的订单是25”,然后当他们访问你的网站时,结果发现这些订单已经被重新编号,他们的订单现在是24。太混乱了。

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

我在@splash58 58的评论中看到了这个建议,但这真的很昂贵。如果使用orderId > $delOrder的表中有1000万行呢?

PS:您的代码容易受到SQL注入的影响。至少将id强制转换为整数。

代码语言:javascript
复制
$del = (int) $_GET['del'];

但是最好使用查询参数:How can I prevent SQL injection in PHP?

票数 0
EN

Stack Overflow用户

发布于 2017-04-18 21:17:12

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

代码语言:javascript
复制
SELECT orderId FROM table ORDER BY id DESC LIMIT 0,1
票数 0
EN

Stack Overflow用户

发布于 2017-04-18 21:43:04

试试这个..。

代码语言:javascript
复制
UPDATE `MYTABLE `, (SELECT @c := 0) c SET `MYTABLE `.`orderID` = (@c := @c + 1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43481761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档