PHP PDO Транзакции SQL Server 2014 Ошибка

Я борюсь с транзакциями PDO и SQL Server, чтобы сохранить некоторые детали счетов:

Система основана на Windows Server 2012 R2, SQL Server 2014 и PHP 7.14.

Проблема в том, что хотя оба запроса выполняются, и я нахожу записи в базе данных (поэтому я предполагаю, что и $ DB, и SQL-запросы в порядке)

Я также установил последние версии драйверов (5.2): php_pdo_sqlsrv_71_nts_x64.dll

Я всегда получаю следующий ответ:

Неустранимая ошибка: Uncaught PDOException: нет активной транзакции в строке 191

где строка 191 содержит $DB->commit();

Я попробовал эти 3 решения:

try
{
$DB->beginTransaction();
$IB=$DB->prepare($SQLBody);
$IH=$DB->prepare($SQLHeader);
$IB->execute();
$IH->execute();
$DB->commit();
}
catch(PDOExecption $e)
{
$DB->rollback();
print "Error!: " . $e->getMessage() . "</br>";
}

тогда я попробовал это:

try
{
$DB->beginTransaction();
$DB->query($SQLBody);
$DB->query($SQLHeader);
$DB->commit();
}
catch(PDOExecption $e)
{
$DB->rollback();
print "Error!: " . $e->getMessage() . "</br>";
}

и наконец это как нашел ВОТ (это работает, хотя кажется, для SQL Server 2017)

try
{
$DB->beginTransaction();
$IB=$DB->exec($SQLBody);
$IH=$DB->exec($SQLHeader);
$DB->commit();
}
catch(PDOExecption $e)
{
$DB->rollback();
print "Error!: " . $e->getMessage() . "</br>";
}

можете подсказать что не так?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]