Вызов хранимой процедуры с использованием ADODB в PHP

Я не мог найти правильную документацию о том, как вызвать хранимую процедуру с помощью 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 , есть ли способ закодировать его для стандарта с несколькими базами данных?

EDIT 01:

Я пробовал этот код, как это было предложено в руководстве 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. как вы делали свой Нирмал.