使用INPUT Paramters使用PDO从MS调用存储过程到MSSQL Server

 mobiledu2502930413 发布于 2023-01-30 12:16

这不起作用:

  $dbh = new PDO("dblib:host=xxxx;dbname=xxx", "xxxxx", "xxxxx");

  $sth = $dbh->prepare("{exec wcweb_UserInfo(?)}");
  $sth->bindParam(1, $name);
  $sth->execute();

  while($result = $sth->fetch(PDO::FETCH_ASSOC)) {
    var_dump($result);
  }

这也行不通:

  $dbh = new PDO("dblib:host=xxxxx;dbname=xxxx", "xxxxx", "xxxx");

  $sth = $dbh->prepare("{call wcweb_UserInfo(?)}");
  $sth->bindParam(1, $name);
  $sth->execute();

  while($result = $sth->fetch(PDO::FETCH_ASSOC)) {
    var_dump($result);
  }

这个工作:

  $dbh = new PDO("dblib:host=xxxxx;dbname=xxxx", "xxxxx", "xxxx");

  $sth = $dbh->prepare("exec wcweb_UserInfo @userid=?");
  $sth->bindParam(1, $name);
  $sth->execute();

  while($result = $sth->fetch(PDO::FETCH_ASSOC)) {
    var_dump($result);
  }

我尝试了上面使用的2没有大括号的工作,等等.我知道有些人会说,好吧,就像它的工作方式一样吗?..问题是我使用sqlsrv_query库从IIS服务器移植一个正在运行的应用程序到Linux服务器.

应用程序中的所有数据库调用都是使用此方法编写的函数:{call wcweb_UserInfo(?)} ..没有指定任何参数名称,因此我必须修改每个数据库调用以包含参数名称.我的印象是PHP5的PDO库可以做同样的调用吗?

救命!有什么我做错了或只是PDO无法拨打这类电话?

1 个回答
  • 出于某种原因,这有效:

      $sth = $dbh->prepare("exec wcweb_UserInfo ?");
      $sth->bindParam(1, $name);
      $sth->execute();
    
      while($result = $sth->fetch(PDO::FETCH_ASSOC)) {
        var_dump($result);
      }
    

    我也许可以忍受这个.任何人都知道为什么其他方法不起作用?图书馆有区别吗?

    2023-01-30 12:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有