php - 列表更新 - 行冲突

标签 php mysql

我有一个名为 list 的列,它在我的订单中被(在 MYSQL 查询中)使用,列表中是数字:(例如 1 到 20)

然后使用 MYSQL order by list ASC 输出此列表 - 但是,当我在后端使用 Jquery 拖放 UI 列表更新我的列表时,它应该更新列表前端。

我的问题是我的列表顺序有时会与其他行冲突,因为列表中可能有两到三行的值为 1 因此当我的订单更新时,我想知道如何通过 +1 < 更新其他行strong>仅当行 >= 给定的订单号时

我不想让该列成为主要列,因为我的目标不是使 list 列唯一,这是因为有多个类别 - 在每个类别中它们都是从 1 开始 - 因此,如果我将其设置为唯一,则会导致错误,因为在不同的类别中有多个 1。

我问了一个 friend ,他说我可以使用触发器函数尝试 PL/SQL,但这对我来说是新的基础——我不完全理解这种语言,想知道是否有人可以帮助我做我想做的事情使用 MYSQL 甚至 PL/SQL。

这是我目前所拥有的:

<?php
$project = mysql_real_escape_string(stripslashes($_POST['pid']));
$category = mysql_real_escape_string(stripslashes($_POST['cat']));
$order = mysql_real_escape_string(stripslashes($_POST['order']));
// need to do update the moved result (list row) and update all conflicting rows by 1
mysql_query("UPDATE `projects` SET `cat`='$category',`list`='$order' WHERE `id`='$project'")or die(mysql_query());
?>

结论:

我正在尝试更新一个非唯一列,以便为该单个类别提供唯一值。我不确定如何通过 +1 更新该类别中的所有行

最佳答案

@andrewsi 是对的,特别是我建议 order by list ASC, last_update DESC 所以在更新 list 的同一个查询中,你可以为 last_update< 添加时间戳 因此您将不需要使用触发器或任何其他更新。

关于php - 列表更新 - 行冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11890135/

相关文章:

javascript - php 和 javascript 表单验证问题

php - Joomla - 如何从管理仪表板隐藏版本更新选项

Java JDBC UPDATE 添加号码?

MySQL 错误 1241 (21000) : Operand should contain 1 column(s)

MySQL 和 PhP PayPal IPN 购物车

php - 如何在mysql中使用多个and or运算符

php - 在PHP中的函数中加载全局变量

php - <? include_once 在 div 中?

php - 如何确保用户在我的网页上只点击一次 "like"按钮

php - mysqli 查询返回 false 但没有错误信息