使用INPUT参数使用PDO从MYSQL服务器调用存储过程

时间:2014-01-30 20:09:46

标签: php sql-server pdo fetch sqlsrv

这不起作用:

  $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 个答案:

答案 0 :(得分:6)

出于某种原因,这有效:

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

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

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