Я не смог найти надлежащую документацию о том, как вызвать хранимую процедуру с использованием ADODB в PHP. Может кто-нибудь помочь, пожалуйста?
Это то, что у меня сейчас, и я чувствую, что это грязный подход (или нет?):
$stmt = "CALL LocFillData('foo', 'bar', @nullcount, @totalcount)";
$rsstmt = "SELECT @nullcount, @totalcount";
$rs = $db->Execute($stmt);
$rsstmt = $db->Execute($rsstmt);
var_dump($rsstmt);
Вместо жесткого кодирования оператора CALL
, есть ли способ кодировать его для стандарта нескольких баз данных?
РЕДАКТИРОВАТЬ 01:
Я попробовал этот код, как указано в Руководстве по ADODB :
<code>$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 "
";
Но результат был:
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 одинаковы для всех БД.
Спасибо за любую помощь.