我找不到有关如何在PHP中使用ADODB调用存储过程的适当文档.有人可以帮忙吗?
这就是我现在所拥有的,我觉得这是一个肮脏的方法(或者不是吗?):
$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 Manual中的建议尝试了以下代码:
$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 "
";
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方法都是相同的.
感谢您的任何帮助.