Я не мог найти правильную документацию о том, как вызвать хранимую процедуру с помощью ADODB в PHP. Может кто-нибудь помочь, пожалуйста?
Это то, что у меня есть сейчас, и я чувствую, что это грязный подход (или нет?):
$stmt = "CALL LocFillData('foo', 'bar', @nullcount, @totalcount)"; $rsstmt = "SELECT @nullcount, @totalcount"; $rs = $db->Execute($stmt); $rsstmt = $db->Execute($rsstmt); var_dump($rsstmt);   Вместо hardcoding CALL , есть ли способ закодировать его для стандарта с несколькими базами данных? 
Я пробовал этот код, как это было предложено в руководстве ADODB :
 $dbname = DB_DATABASE; $tbname = TABLE_CONTACT_LOCATIONS; $stmt = $db->PrepareSP("BEGIN; adodb.LocFillData(:dbname, :tbname, :nullcount, :totalcount); END;"); $db->InParameter($stmt,$dbname,'dbname'); $db->InParameter($stmt,$tbname,'tbname'); $db->OutParameter($stmt,$nullcount,'nullcount'); $db->OutParameter($stmt,$totalcount,'totalcount'); $ok = $db->Execute($stmt) or die($db->ErrorMsg()); echo "<pre>"; var_dump($ok); echo "</pre>"; 
Но результат был:
 object(ADORecordSet_empty)#15 (6) { ["dataProvider"]=> string(5) "empty" ["databaseType"]=> bool(false) ["EOF"]=> bool(true) ["_numOfRows"]=> int(0) ["fields"]=> bool(false) ["connection"]=> bool(false) } 
В чем может быть проблема? Документация была для Oracle, и я использую MySQL. Но я считаю, что методы ADODB одинаковы для всех БД.
Спасибо за любую помощь.
  ОК.  Я сам нашел ответ.  В ADODB для MySQL нет чистого способа сделать это.  Может использоваться метод PrepareSP() , но не метод InParameter или OutParameter . 
Документация ADODB гласит:
InParameter () – это функция-оболочка, которая вызывает параметр () с $ isOutput = false. Преимущество этой функции заключается в том, что она самодокументирована, потому что параметр $ isOutput больше не нужен. Только для mssql и oci8 в настоящее время.
OutParameter () – это функция-обертка, которая вызывает параметр () с помощью $ isOutput = true. Преимущество этой функции заключается в том, что она самодокументирована, потому что параметр $ isOutput больше не нужен. Только для mssql и oci8 в настоящее время.
Я сделал это через библиотеку Adodb, чтобы проверить это .. $ addProduct = $ obj-> ExecuteQuery ("Начать, DECLARE @ProductCode как varchar (100); EXEC CREATEPRODUCT '$ pname', '$ price', @ProductCode OUTPUT, '$ merchantId', выберите @ProductCode; End; ");
для полного объяснения вы можете проверить это http://developer99.blogspot.com/2011/07/calling-ms-sql-sp-from-php.html
этот вариант также использовать его:
$rs = $db->Execute($stmt); $rsstmt = $db->Execute($rsstmt);   кажется подходящим, потому что PrepareSP () используется adodb и oracle.  Мне не удавалось пробовать одну и ту же библиотеку adodb и mysql.  как вы делали свой Нирмал.