>백엔드 개발 >PHP 튜토리얼 >Yii 프레임워크를 기반으로 하는 PHP에서 PDO를 사용하여 sqlserver 저장 프로시저를 호출하는 방법 소개

Yii 프레임워크를 기반으로 하는 PHP에서 PDO를 사용하여 sqlserver 저장 프로시저를 호출하는 방법 소개

黄舟
黄舟원래의
2017-10-09 09:20:181380검색

이 글에서는 주로 PDO를 기반으로 sqlserver 저장 프로시저를 호출하는 PHP의 일반적인 방법을 소개하고, 예제를 기반으로 Yii 프레임워크를 기반으로 pdo를 사용하여 sqlserver 저장 프로시저를 호출하는 관련 작업 단계와 구현 기술을 분석합니다.

이 기사의 예제는 PHP를 사용하여 PDO 기반의 sqlserver 저장 프로시저를 호출하는 방법입니다. 참고하실 수 있도록 자세한 내용은 다음과 같습니다.

비즈니스 측의 저장 프로세스는 항상 sqlserver에 있었기 때문에 이를 호출하려면 php를 사용해야 합니다. 그러나 로컬은 windows이고 온라인은 입니다. 하나는 Linux입니다. 처음에는 Yii 프레임워크를 사용했습니다. 로컬에서는 호출할 수 있는 일부 메커니즘이 항상 좋은 것으로 나타났지만 온라인에서는 작동하지 않습니다. 많은 솔루션을 찾다가 마침내 로컬에서 사용되는 드라이버가 sqlsrv라는 것을 알게 되었습니다. 그리고 dblib 온라인이므로 링크에 주의해야 합니다. 결과 세트를 가져올 때 Windows와 Linux 간에 차이가 있는 것 같습니다. 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',
],

위 내용은 Yii 프레임워크를 기반으로 하는 PHP에서 PDO를 사용하여 sqlserver 저장 프로시저를 호출하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.