【问题标题】:Calling stored procedure from PHP using PDO to MSSQL Server using INPUT Paramters使用 PDO 从 PHP 调用存储过程到使用 INPUT 参数的 MYSQL Server
【发布时间】:2014-02-23 08:19:33
【问题描述】:

这不起作用:

  $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 无法进行此类调用?

【问题讨论】:

  • 你得到什么错误信息?
  • 完全没有错误信息..这很奇怪。

标签: php sql-server pdo fetch sqlsrv


【解决方案1】:

由于某种原因,这可行:

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

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

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

【讨论】:

  • 抱歉,在我错过了您使用 SQL Server 的事实之前。 SQL Server 不使用括号进行存储过程调用。
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 2015-09-21
  • 2017-08-09
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
相关资源
最近更新 更多