如果有人问这个问题,我很抱歉,但我找不到任何可以帮助我的东西。我试图切换表中两个主键的值,如 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/