Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Methode zur Verwendung von PDO zum Aufrufen gespeicherter SQLServer-Prozeduren mithilfe von PDO basierend auf dem Yii-Framework

Einführung in die Methode zur Verwendung von PDO zum Aufrufen gespeicherter SQLServer-Prozeduren mithilfe von PDO basierend auf dem Yii-Framework

黄舟
黄舟Original
2017-10-09 09:20:181314Durchsuche

In diesem Artikel wird hauptsächlich die allgemeine Methode zum Aufrufen gespeicherter SQLServer-Prozeduren basierend auf PDO vorgestellt und die relevanten Betriebsschritte und Implementierungstechniken für den Aufruf gespeicherter SQLServer-Prozeduren basierend auf dem Yii-Framework anhand des Beispiels Friends in Need analysiert kann darauf verweisen

Das Beispiel in diesem Artikel beschreibt, wie PHP gespeicherte SQLServer-Prozeduren basierend auf PDO aufruft. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Da der gespeicherte Prozess auf der Geschäftsseite immer auf SQL Server war, müssen wir PHP verwenden, um ihn aufzurufen. Unser lokaler Prozess ist jedoch Windows , und die Online-Version ist Linux. Ich habe begonnen, einige Mechanismen des Yii-Frameworks zu verwenden, um lokal, aber nicht online, zu arbeiten. Ich habe nach vielen Lösungen gesucht und schließlich den lokal verwendeten Treiber sqlsrv gefunden Beachten Sie beim Abrufen des Ergebnissatzes, dass Windows und Linux unterschiedlich zu sein scheinen, wenn ich set nocount on hinzufüge. Es kann jedoch das letzte sein. Wenn Sie es jedoch in Linux einfügen, ist alles weg, sagte ich wütend, ich könnte sie am Ende genauso gut nehmen

Teilen Sie eine Methode mit, nachdem Sie es geklärt haben:


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;
  }
}

Anwendungsbeispiele:


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);
  }

Die Form der Variablen $sql und $params ist wie gezeigt im Beispiel:

Die Form der Variablen $connect_info ist wie folgt: Sie können das Formular und das Zuweisungsformular selbst ändern. Der Vorteil des Frameworks besteht darin, dass Sie die Konfiguration direkt in verschiedenen Umgebungen abrufen können. Sie müssen sie nicht selbst ändern.]:


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

Das obige ist der detaillierte Inhalt vonEinführung in die Methode zur Verwendung von PDO zum Aufrufen gespeicherter SQLServer-Prozeduren mithilfe von PDO basierend auf dem Yii-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn