我有一个包含文章的 sql 表。我将文章的顺序存储在 sql 中的一个 INT 字段中。
通过(拖放)UI 中的 ajax 帖子,我得到了一个包含整数的数组(新订单)。
示例:
旧顺序:2,1,3,4
新顺序应该是:2,1,4,3
PHP:
$i = 1;
foreach ($inputarray as $var) :
if ($i != $var) :
$this->_sqli->query("UPDATE articles
SET artorder=$i WHERE artorder = $var and pagesid = $pagesid");
endif;
$i++;
endforeach;
问题:当我尝试交换元素时,它们将是相同的。所以上一个例子的输出将是:2,1,4,4 我应该如何更新我的 sql?
最佳答案
只要“artorder”是您在更新行时使用的唯一键,这就不起作用。这是因为您会遇到两行中的 artorder 相同的情况;因此,您不再拥有唯一的 key 。只需将主键添加到表中并在 UPDATE 语句中使用它:
ALTER TABLE articles ADD articleId INT(5) NOT NULL,
ADD PRIMARY KEY (articleId)
关于PHP/MySQL 更新顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9534771/