Как найти затронутые строки в запросе UPDATE, используя библиотеку Adodb PHP?

Я использую библиотеку Adodb PHP для обработки функций БД. Большая часть функциональности была обработана с использованием хранимых процедур. Однако в некоторых случаях мне нужно написать быстрые пользовательские запросы для завершения процесса.

Код:

$Result = array();
$this->DB->SetFetchMode(ADODB_FETCH_ASSOC);
$Result = $this->DB->PrepareSP("UPDATE Member SET FirstName = '" . $param['FirstName'] . "', LastName = '" . $param['LastName'] . "', Email = '".$param['Email']."', DateOfBirth = '".$param['DateOfBirth']."', HoroscopeID = ".$param['HoroscopeID'].", Gender = '".$param['Gender']."', CountryID = ".$param['CountryID']." WHERE ID = ".$param['MemberId'].";SELECT @@IDENTITY AS AffectedRows;");
$Result = $this->DB->GetArray($Result);

Результат:

array (size=1)
0 =>
array (size=1)
'AffectedRows' => null

Я также попробовал:

$this->DB->affected_rows();

Возвращает 0 каждый раз. Я уже повторил внутренний запрос и запустил Navicat, он работает нормально. Однако, когда он вызывается через код, он не обновляет никаких записей.

0

Решение

Вот как получить доступ к выходным данным хранимой процедуры в ADOdb:

/*
* Your stored procedure preparation returns a handle
*/
$procedure = $this->DB->prepareSp("your statement...");

/*
* You prepare and set an output parameter to receive your affected rows
* The name of the parameter matches the stored procedure variable
*/
$outParameterName  = 'AffectedRows';
$outParameterValue = 0;

$ok = $this->DB->outParameter($procedure,$outParameterName,$outParameterValue);

/*
* Execute the procedure handle , it is an update so a resultset is not returned
*/
$result = $this->DB->execute($procedure);

/*
* The value of the Affected rows is now available in your out Parameter value
*/
print "AffectedRows IS NOW $outParameterValue";
0

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

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