SET Sort = :Sort + 1
UPDATE table SET Sort = 666 + 1 WHERE Sort = (SELECT Sort FROM table WHERE Sort > 666)
public static function SortProduct($value){
var_dump($value); die();
$db = Db::getConnection();
$sql = "UPDATE table SET Sort = Sort + 1 WHERE Sort IN (SELECT Sort FROM table WHERE Sort >= :Sort)";
$result = $db->prepare($sql);
$result->bindParam(':Sort', $value, PDO::PARAM_INT);
return $result->execute();
}
<?php
public static function updateProductById($id, $options) {
$db = Db::getConnection();
try {
$db->beginTransaction();
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // для выброса исключений
$sort = (int) $_POST['Sort'];
/*
* Первый запрос (в SQL добавил сорт, или он в другом месте меняется)
*/
$sql = "UPDATE table SET Name = :Name, Article = :Article, Price = :Price, Sort = :Sort WHERE id = :id";
$result = $db->prepare($sql);
$result->bindParam(':id', $id, PDO::PARAM_INT);
$result->bindParam(':Sort', $sort, PDO::PARAM_INT);
$result->bindParam(':Name', $options['Name'], PDO::PARAM_STR);
$result->bindParam(':Article', $options['Article'], PDO::PARAM_STR);
$result->bindParam(':Price', $options['Price'], PDO::PARAM_INT);
$result->execute();
/*
* Второй запрос (правки остальных индексов)
*/
$sql = "UPDATE table SET Sort = Sort + 1 WHERE Sort > {$sort}";
$db->exec($sql);
//
$db->commit();
}
catch (Exception $e) {
$db->rollBack();
throw $e;
}
return true;
}