3

これは動作しません:

  $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 がそのような呼び出しを行うことができないということですか?

4

1 に答える 1

7

何らかの理由でこれは機能します:

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

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

これで生きていけるかも。他の方法が機能しない理由を知っている人はいますか? ライブラリの違いですか?

于 2014-01-30T20:33:36.980 に答える