php7.1环境,用 mssqlnative 怎样得到 存储过程 结果集?

gj_cong 2018-10-08 07:08:35
环境:
1.php 7.01
2.数据库是mssql2008 R2 64bit
3.引用http://adodb.org 框架(可能与这个没有关系).
4.查询没有问题。如下
include_once(IA_ROOT.'\addons\adodb5\adodb.inc.php');
$this->db= ADONewConnection('mssqlnative');
$this->db->setConnectionParameter('ReturnDatesAsStrings',false);
$this->db->setConnectionParameter('characterSet','UTF-8');
$ADODB_FETCH_MODE = ADODB_FETCH_BOTH;
$this->db->connect('127.0.0.1','sa','password','db');
$sql="select a,b from table ";
$rs = $db->Execute($sql);
while( !$rs->EOF ) {
$account[]=array(
'account'=>$rs->fields['account'],
'accountname'=>$accountname[$rs->fields['account']],
'natbalance'=>$rs->fields['natbalance']
);

$rs->MoveNext();
}
$rs->Close();
5.执行存储过程,执行成功,但是取不了结果集。如下
include_once(IA_ROOT.'\addons\adodb5\adodb.inc.php');
$this->db= ADONewConnection('mssqlnative');
$this->db->setConnectionParameter('ReturnDatesAsStrings',false);
$this->db->setConnectionParameter('characterSet','UTF-8');
$ADODB_FETCH_MODE = ADODB_FETCH_BOTH;
$this->db->connect('127.0.0.1','sa','password','db');
$sql="exec sp_temp 'a','b' ";
$rs = $db->Execute($sql);
while( !$rs->EOF ) {
//空
$rs->MoveNext();
}
$rs->Close();
6.用传参方法也是一样,执行成功,但是取不了结果集。如下
include_once(IA_ROOT.'\addons\adodb5\adodb.inc.php');
$this->db= ADONewConnection('mssqlnative');
$this->db->setConnectionParameter('ReturnDatesAsStrings',false);
$this->db->setConnectionParameter('characterSet','UTF-8');
$ADODB_FETCH_MODE = ADODB_FETCH_BOTH;
$this->db->connect('127.0.0.1','sa','password','db');
$parameter1Name = 'n1';
$parameter1value = 'v1';
$parameter2Name = 'n2';
$parameter2value = 'v2';
$procedure = $this->db->prepareSp('sp_temp');
if (!$procedure)
die ('Invalid or inaccessible stored procedure name');
$ok = $this->db->inParameter($procedure,$parameter1Name,$parameter1value);
$ok = $this->db->inParameter($procedure,$parameter2Name,$parameter2value);

$rs = $this->db->execute($procedure);

print_r($rs); //也是不行
...全文
289 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-11-03
  • 打赏
  • 举报
回复
应该不行
SET NOCOUNT ON 只是不将计数结果作为结果输出在后面
hookee 2018-11-03
  • 打赏
  • 举报
回复
存储过程开头 SET NOCOUNT ON 试试看
xuzuning 2018-11-02
  • 打赏
  • 举报
回复
既然是 封装的 adodb 类库,那么就有报告错误的属性或方法
你都不去看错误报告,怎么知道是哪里的错呢?

通常 存储过程返回的结果从全部结果集的第二个位置开始(第一个位置是常规 SQL 指令返回的结果)
不知你的 adodb 是否提供了移动结果集的方法,比如 MySQLi mysqli_stmt_next_result、PDO 的 nextRowset

gj_cong 2018-11-02
  • 打赏
  • 举报
回复
没有人回复?

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧