<?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;
}