首页 > 解决方案 > 插入具有更高顺序值的新行时,如何更改表中的顺序值?

问题描述

使用 php 和 mysqli,我有一个分类表,用于对产品进行分组并控制它们在我的目录中显示的顺序。字段“ord”是一个 int,其值控制这些产品类别的显示顺序。插入新类别时,我想从新类别向下重新排序剩余类别并更新表,然后插入新类别而不复制“ord”值。

有11个类别。我想插入我的新类别,它的“ord”值为 5。显然,我需要为每个“ord”值 6 - 11 添加 1 以重新排序我的目录。不知道该怎么做。我不擅长使用数组,但我认为某种带有 UPDATE 表的 foreach array[$key][] + 1 会起作用。我不清楚如何创建数组。

对此真的没有任何工作想法......

Category ord=1: Site Licensing
Category ord=2: PICC Insertion Training
Category ord=3: Ultrasound Training

新类别:ord 2:会员订阅

Category ord=1: Site Licensing
Category ord=2: Membership Subscriptions
Category ord=3: PICC Insertion Training
Category ord=4: Ultrasound Training

标签: phpmysql

解决方案


您可以在执行INSERT. 通过首先更新现有数据,您可以为新条目留出空间。

$order = $_POST['order'];

$stmt = $mysqli->prepare("UPDATE `categories` set order = order + 1 where order >= ?"));

$stmt->bind_param("i", $order);

$stmt->execute();

/** Now perform INSERT statement */

推荐阅读