成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? PHP基于PDO調用sqlserver存儲過程通用方法【基于Yii框架】
全站頭部文字 我要出現在這里
PHP基于PDO調用sqlserver存儲過程通用方法【基于Yii框架】 756 2023-12-08   

本文實例講述了PHP基于PDO調用sqlserver存儲過程的方法。分享給大家供大家參考,具體如下:

由于業務這邊存儲過程一直在sqlserver上面,所以要用php去調用它,然而我們本地的是windows,而線上又是linux,一開始使用Yii框架的一些機制去調用發現在本地一直都是好的然而到線上就不行了,找了很多方案,最后找到了pdo這種方案,而本地使用的驅動是sqlsrv線上是dblib所以需要注意下鏈接pdo時的驅動形式,在取結果集的時候注意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的形式如例子中表現的;

變量$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',
],

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP基于pdo操作數據庫技巧總結》、《php+Oracle數據庫程序設計技巧總結》、《PHP+MongoDB數據庫操作技巧大全》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。


主站蜘蛛池模板: 张静初的三级未删减版| 电影《神盾局特工》| 尹雪喜 新建文件夹2| 吴京电影全集完整版喜剧| 布谷鸟 电影| cctv17农业农村频道在线直播| 02j331| 宋小莹| 羞羞答答av| stag| 激情豪放女| 四川影视文艺频道| 香港之夜完整版在线观看高清| 拔萝卜电视剧高清免费观看全集 | 包头电视台| 永远少年电影免费播放| 第三套广播体操七彩阳光完整版视频| 电视剧瞧这一家子演员表| 守株待兔评课| 艳妇乳肉豪妇荡乳ⅹxxo电影| 简谱儿歌| 发型男2024流行发型图片| 非常外父| 黄子华最新电影| 粉嫩在线| 绝对权力全集免费观看| 丁尼| 重温经典节目预告| 谭耀文演的电影| 大丈夫日记| 桥段| 天云山传奇 电影| 野性的呼唤巴克原版| 春天的芭蕾歌词| 家庭琐事电影| 男士专用山水画图片| 最新欧美电影| 《救苦经》念诵| 性的视频| 最爱电影完整版在线观看免费高清 | 山东教育电视台直播|

?。?!站長長期在線接!??!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103