PHP/MySQL 更新顺序

标签 php mysql arrays

我有一个包含文章的 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/

相关文章:

php - 如何从 Silex 中的自定义文件/类连接到数据库

php - 从多个复选框获取 POST 数据?

php - 在 PHP 中设置数组并向其中写入 MySQL 值时遇到问题

mysql - VB.NET SQL 数据库登录

c++ - 如何将位存储到用于文件输入/输出的巨大字符数组

arrays - 无法将迭代器转换为 js_sys::Array

php - MySQL。需要计算 ~9000 个类别中的帖子数量

php - PHPExcel中有没有直接把PHP数组写成一行的方法?

php - 如何使用 php 下载和上传 SQL 数据库为 .sql 文件?

javascript - 可以访问数组元素,但不能迭代