php - 插入具有更高顺序值的新行时,如何更改表中的顺序值?
问题描述
使用 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
解决方案
您可以在执行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 */
推荐阅读
- postgresql - 在 PostgreSQL(9.5.15) 程序中无法循环超过 1000 次以插入记录
- ios - 从包含字符串数组的对象元素中过滤结构对象
- javascript - ngModel 未绑定角度 4 中的选择
- google-apps-script - 使用并行单元格中的电子邮件编辑单元格时发送电子邮件
- excel - 创建其平均值等于 M 的随机数
- maven - Maven deploy:file 步骤:自动部署到快照或发布存储库
- algorithm - 分支非常不同的算法
- java - 多个 Tomcat 实例,每个实例都有不同的 JVM 参数
- ruby-on-rails - premailer-rails 生产错误:资产管道中不存在资产“mailer.css”
- tableau-api - 如何从 tableau 中提取视图元数据