国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP基于PDO調(diào)用sqlserver存儲過程通用方法【基于Yii框架】

2024-05-05 00:00:23
字體:
供稿:網(wǎng)友

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

由于業(yè)務(wù)這邊存儲過程一直在sqlserver上面,所以要用php去調(diào)用它,然而我們本地的是windows,而線上又是linux,一開始使用Yii框架的一些機制去調(diào)用發(fā)現(xiàn)在本地一直都是好的然而到線上就不行了,找了很多方案,最后找到了pdo這種方案,而本地使用的驅(qū)動是sqlsrv線上是dblib所以需要注意下鏈接pdo時的驅(qū)動形式,在取結(jié)果集的時候注意windows和linux好像有所不同,在我加上set nocount on后win若果直接取結(jié)果就可以拿到最后的,然而放到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的形式如例子中表現(xiàn)的;

變量$connect_info的形式如下【因為本人是在Yii框架 下使用的,所以以此變量是直接根據(jù)Yii來獲取數(shù)據(jù)庫鏈接配置來進行的,如果自己有所不同可以自行更改形式以及賦值形式,在框架中方便的是不同環(huán)境下直接獲取配置能分別獲取到是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程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 岱山县| 辛集市| 象山县| 扶风县| 苍梧县| 鸡东县| 米林县| 桑日县| 吉木萨尔县| 合作市| 东兰县| 乌拉特中旗| 朝阳区| 德州市| 淮阳县| 班玛县| 昂仁县| 长丰县| 深泽县| 郎溪县| 阳泉市| 林芝县| 肥西县| 正安县| 桐庐县| 武胜县| 从化市| 江安县| 英德市| 鄂托克前旗| 嘉定区| 沅陵县| 道真| 永靖县| 黔西县| 富阳市| 天峻县| 沅江市| 类乌齐县| 灌南县| 通河县|