激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP基于PDO調用sqlserver存儲過程通用方法【基于Yii框架】

PHP基于PDO調用sqlserver存儲過程通用方法【基于Yii框架】

2021-06-30 16:49流年_夢 PHP教程

這篇文章主要介紹了PHP基于PDO調用sqlserver存儲過程通用方法,結合實例形式分析了基于Yii框架采用pdo調用sqlserver存儲過程的相關操作步驟與實現技巧,需要的朋友可以參考下

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

由于業務這邊存儲過程一直在sqlserver上面,所以要用php去調用它,然而我們本地的是windows,而線上又是linux,一開始使用Yii框架的一些機制去調用發現在本地一直都是好的然而到線上就不行了,找了很多方案,最后找到了pdo這種方案,而本地使用的驅動是sqlsrv線上是dblib所以需要注意下鏈接pdo時的驅動形式,在取結果集的時候注意windows和linux好像有所不同,在我加上set nocount on后win若果直接取結果就可以拿到最后的,然而放到linux就沒了,氣死人的說,索性最后我把所有的都取一遍;

分享整理后的一個方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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;
  }
}

使用舉例:

?
1
2
3
4
5
6
7
8
9
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,不需要自行去更改】:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
[
  '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程序設計有所幫助。

原文鏈接:http://blog.csdn.net/u012655332/article/details/73526555

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品久久久久久久久久久久午夜 | 伦一区二区三区中文字幕v亚洲 | 免费看欧美黑人毛片 | 日日操夜夜操狠狠操 | 美女久久久久 | 成人福利在线看 | 久久久免费 | 黄色大片在线免费观看 | 亚洲精品在线观看免费 | 国产在线精品一区二区 | 国产一级淫| 一级尻逼视频 | 91精品国产手机 | av电影在线免费 | 一区二区三区四区在线观看视频 | 久久tv免费国产高清 | 日韩精品久久久久久久九岛 | 宅男噜噜噜66国产在线观看 | 天天天干夜夜夜操 | 国产九色在线观看 | 九九热在线视频免费观看 | 蜜桃91麻豆 | av性色全交蜜桃成熟时 | 一级黄色免费观看视频 | 成人9禁啪啪无遮挡免费 | 91免费影院 | 精品亚洲va在线va天堂资源站 | 国产成年人网站 | 欧美久久久久久久久 | 久久久久久久爱 | 免费观看国产精品视频 | 久久久资源网 | www.9191.com| 久久精品欧美视频 | 爱逼av | 一级毛片视频播放 | 99亚洲伊人久久精品影院红桃 | 男人的天堂视频网站 | 欧美大逼网| 羞羞的视频 | 成人毛片在线 |