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

标签 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 不是自动递增。

最佳答案

删除订单时不要重新编号。

假设您的应用通过电子邮件告诉用户“您的 orderid 是 25”,然后当他们访问您的网站时,发现 orderid 已经重新编号并且他们的 orderid 现在是 24。很困惑。

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

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

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

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

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

关于PHP:从 mysql 中删除并重置 MYSQL 数据库中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43481761/

相关文章:

php - 创建一个表,其名称取自 php 中的变量,并向其附加一个字符串

c# - 不正确的字符串值 : '\xEF\xBF\xBD' for column

mysql - 从存储过程返回对象

php - 如何允许数组中重复的mysql行id?

php - 多对多 Doctrine

php - Doctrine 2 : selecting entity fields, 包括相关字段

mysql - 使用 Microsoft Access 作为 MySQL 数据库的前端?

JavaDB连接错误(网络协议(protocol))

database - 如何删除表中在特定时间窗口之间创建的记录?

php - 如何从MySQL列中获取最高值