ホームページ  >  記事  >  バックエンド開発  >  PDO を使用して Yii フレームワークに基づいた PHP で sqlserver ストアド プロシージャを呼び出す方法の紹介

PDO を使用して Yii フレームワークに基づいた PHP で sqlserver ストアド プロシージャを呼び出す方法の紹介

黄舟
黄舟オリジナル
2017-10-09 09:20:181321ブラウズ

この記事では、PDO に基づいて PHP が sqlserver ストアド プロシージャを呼び出す一般的な方法を主に紹介し、PDO を使用して Yii フレームワークに基づいて sqlserver ストアド プロシージャを呼び出す関連する操作手順と実装スキルを分析します。必要な友人は、この例を参照してください。この記事の例は、PHP を使用して、PDO に基づいて sqlserver ストアド プロシージャを呼び出します。参考までに、詳細は次のとおりです。

ビジネス側のストアドプロセスは常に SQLserver 上にあるため、それを呼び出すには php を使用する必要があります。オンラインでは Linux を使用していましたが、ローカルで呼び出すメカニズムの中には常に有効であることが判明しましたが、オンラインでは有効ではないことがわかり、最終的にローカルで使用されるドライバーは sqlsrv でした。 dblib はオンラインなので、結果セットを取得するときはリンクに注意する必要があります。set nocount on を追加すると、Win が結果を直接取得するようになります。ただし、Linux に入れると消えてしまうので、最終的にはすべて取得しました。

コンパイルされたメソッドを共有します:

class StoredProcHelper
{
  private static $type = [
   'integer'=>PDO::PARAM_INT,
   'string'=>PDO::PARAM_STR,
   'null'=>PDO::PARAM_NULL,
   'boolean'=>PDO::PARAM_BOOL
  ];
  private $sql = '';//此变量在下方说明
  private $params = [];//此变量在下方说明
  private $connect_info;//此变量在下方说明
  private $pdo_connect;
  public function __construct($connect_info,$sql,$params){
    $this->sql = 'SET NOCOUNT ON;'.$sql;
    $this->params = $params;
    $this->connect_info = $connect_info;
    if(!empty($this->connect_info->dsn) && !empty($this->connect_info->username) && !empty($this->connect_info->password)){
      $this->pdo_connect = new PDO($this->connect_info->dsn,$this->connect_info->username, $this->connect_info->password);
    }
  }
  public function ExecuteProc(){
    $link = $this->pdo_connect->prepare($this->sql);
    foreach ($this->params as $key => $value){
      $link->bindParam($key,$value,self::$type[strtolower(gettype($value))]);
    }
    $link->execute();
    $i = 1;
    $res[0] = $link->fetchAll();
    while($link->nextRowset()){
      $res[$i] = $link->fetchAll();
      $i++;
    }
    return $res;
  }
}

public static function Example($connect_info,$mobile){
    $sql='declare @customParam int;exec you_proc @Mobile = :mobile,@OutParam=@customParam out;select @customParam as outName;';
    $params = [
      ':mobile'=>$mobile
    ];
    $pdo = new StoredProcHelper($connect_info,$sql,$params);
    $res = $pdo->ExecuteProc();
    var_dump($res);
  }

変数 $sql と $params の形式は例の Performance のとおりです。


変数 $connect_info の形式は次のとおりです [Yii フレームワークで使用しているため、この変数は直接基づいていますYii でデータベース リンクの構成を取得する場合は、フォームと割り当てを自分で変更できますが、フレームワークの便利な点は、sqlsrv と dblib をそれぞれ異なる環境で直接取得できることです。自分で変更する必要はありません]:

[
  'dsn' => 'sqlsrv:Server=xxxxxxxxxx;Database=xxxxx',
  'username' => 'xxxxx',
  'password' => 'xxxxxxxxxxxxxxxxxxxx',
  'charset' => 'utf8',
]
//或
[
  'dsn' => 'dblib:host=xxxxxxxxxx;dbname=xxxxx',
  'username' => 'xxxxx',
  'password' => 'xxxxxxxxxxxxxxxxxxxx',
  'charset' => 'utf8',
],

以上がPDO を使用して Yii フレームワークに基づいた PHP で sqlserver ストアド プロシージャを呼び出す方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。