php pdo切换主键值

标签 php mysql pdo

如果有人问这个问题,我很抱歉,但我找不到任何可以帮助我的东西。我试图切换表中两个主键的值,如 1 变为 2 和 2 变为 1 。 我收到此错误 SQLSTATE[23000]:违反完整性约束:1062 键“PRIMARY”的重复条目“2”

我对mysql不是很熟悉。你会如何解决这个问题

<?php
//Connect to the DB
require_once('connect.php');
//insert names into the DB
$MoveToTwo = '2';
$MoveToOne = '1';

try{
    global $db;
    $inserts = $db->prepare("UPDATE slider_images SET id=:MoveToOne WHERE id=:MoveToTwo");
    $inserts = $db->prepare("UPDATE slider_images SET id=:MoveToTwo WHERE id=:MoveToOne");
    $inserts->bindParam(':MoveToOne', $MoveToOne);
    $inserts->bindParam(':MoveToTwo', $MoveToTwo);
    $inserts->execute();
}

catch(Exception $e){
    echo $e->getMessage();
    exit;
}
?>

最佳答案

如果我理解你的问题,你可以这样做来对你的行进行排序。

在 mysql 操作中,id 是一个坏主意,因为它是行的 mysql 标识符,并且是自动生成的。

更好的解决方案是添加一个名为ordered的新列(不要使用order,因为Mysql键是保留的)。然后,您可以更轻松地更新此值而不会发生冲突,并在选择查询中添加 ORDER BY Ordered ASC 以获得与以前相同的效果。

要完成保存,您需要在行创建时添加一个值。为此,在保存条目之前,您需要计算 ROW 编号。

关于php pdo切换主键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015653/

相关文章:

php - 创建短代码以在 Woocommerce 上显示产品库存状态

php - 如何使用 PHP (Laravel 5.8) 在后台进程中上传 CSV 文件

php - 使用 PHP + PDO for Sqlite CREATE TABLE 部分失败

php - 分页 - 如何不允许用户进一步浏览现有页面?

php - htaccess 排除 CSS/JS/图像

php - mysql 中 WHERE 的问题

php - Phalcon hasManyToMany 停止添加与数据库的关系

c# - 部署在 AWS 上时 MySQL 表不存在

php - MySQL PDO 连接 php

php - 十进制与36进制之间的转换