qq_37515008 2019-06-24 14:58 采纳率: 0%
浏览 346

php用存储过程 查询sql server的数据库,存储过程有两个结果集,第一个是总数,第二个是数据。

$sql = " DECLARE @return_value int
EXEC @return_value =Pager 50,1,'*','表名',' ','','id desc'
SELECT 'Value' = @return_value";
//echo $sql;exit;
$result =odbc_exec($this->connect, $sql);
$arr = [];
while ($row = odbc_fetch_array($result))
{
//这里的$row只有总数
foreach ($row as $k => $v) {
$row[$k] = iconv('GB2312','UTF-8',$v); var_dump($row);
}exit;
array_push($arr, $row);
}
图片说明


  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 06:22
    关注

    根据你提供的代码和问题描述,有以下几点需要注意:

    1. 存储过程名称是 Pager,需要确保这个存储过程已经被正确创建在 SQL Server 数据库中。

    2. 执行的 SQL 语句使用了 EXECUTE 命令来调用 Pager 存储过程,并将结果赋值给 @return_value 变量。根据你提供的代码,只输出了 @return_value 变量的值,而没有输出第二个结果集的数据。如果需要输出数据集,可以对上面的 SQL 语句进行修改:

    $sql = "DECLARE @return_value INT;
            EXEC @return_value = Pager 50,1,'*','表名','','','id DESC';
            SELECT * FROM 表名;
            SELECT 'Value' = @return_value";
    

    这样就可以获取到存储过程返回的第一个结果集(总数)和第二个结果集(数据集)。

    1. 代码中使用了 odbc_exec 函数来执行 SQL 语句,需要确保 PHP 安装了 ODBC 扩展,且已经正确连接到 SQL Server 的数据库。

    2. 代码中使用了 iconv 函数将结果集中的 GB2312 编码转换为 UTF-8 编码。需要根据实际情况确认数据库中的字符集类型,确保转换正确。

    总的来说,可以按照以上几点进行排查,如果还有问题可以提供更详细的信息。

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制