Maison php教程 php手册 PHP调用SQL Server存储过程

PHP调用SQL Server存储过程

Jun 06, 2016 pm 07:53 PM
php server sql 存储 安装 调用 processus

一、安装SQL Server Driver for PHP 在微软官网上发现了这个东西,他提供了一套PHP对MS2005/2008操作的全新函数库,并且支持UTF8,作为PHP的扩展运行。看来MS对PHP 还比较亲善,PHP自带的mssql操作函数对MS2005/2008的一些新功能不支持,MS就自己提供了解决

一、安装SQL Server Driver for PHP
    在微软官网上发现了这个东西,他提供了一套PHP对MS2005/2008操作的全新函数库,并且支持UTF8,作为PHP的扩展运行。看来MS对PHP 还比较亲善,PHP自带的mssql操作函数对MS2005/2008的一些新功能不支持,MS就自己提供了解决方法,赞一个!不过只支持PHP5.2 /5.3,MS说目前在PHP 5.2上测试过,低版本的是否支持就不清楚了。我的系统正好也用的是PHP5.2,其它版本也懒得去测了。
下载地址:http://www.microsoft.com/downloads/details.aspx?familyid=CCDF728B-1EA0-48A8-A84A-5052214CAAD9&displaylang=en
下载后是个.exe的压缩包,解开后有下列.dll文件:
php_sqlsrv_52_nts_vc6.dll
php_sqlsrv_52_ts_vc6.dll
php_sqlsrv_53_nts_vc6.dll
php_sqlsrv_53_nts_vc9.dll
php_sqlsrv_53_ts_vc6.dll
php_sqlsrv_53_ts_vc9.dll
要根据自己的PHP环境选择一个合适的.dll,压缩包的说明文档给出了适用范围:

Driver file
PHP version
Thread safe?
Use with PHP .dll

php_sqlsrv_53_nts_vc6.dll
5.3
no
php5.dll

php_sqlsrv_53_nts_vc9.dll
5.3
no
php5.dll

php_sqlsrv_53_ts_vc6.dll
5.3
yes
php5ts.dll

php_sqlsrv_53_ts_vc9.dll
5.3
yes
php5ts.dll

php_sqlsrv_52_nts_vc6.dll
5.2
no
php5.dll

php_sqlsrv_52_ts_vc6.dll
5.2
yes
php5ts.dll

    DLL名字称中的_vc6/_vc9表示你使用的PHP为vc6或vc9编译,PHP version中确定适用版本,Thread safe为该版本安全性,Use with PHP .dll是你PHP的安装方式。更多说明请参考文档。
    我这里选择的是php_sqlsrv_52_ts_vc6.dll,拷贝到php/ext/下,然后在php.ini中添加一行 “extension=php_sqlsrv_52_ts_vc6.dll”,重启WEB服务。phpinfo();查看一下,如果有“sqlsrv”扩 展项,就表示安装成功了。
二、安裝Microsoft SQL Server Native Client
    这个是MSSQL的客户端存取程序,它提供了ODBC、OLE DB、ADO 等方式连接 MSSQL。 如果已经安装了MSSQL2005/2008,则已经安装了对应版本的此程序,不用单独安装了。
    Microsoft SQL Server Native Client 2005支持SQL Server 7、2000、2005
下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=50b97994-8453-4998-8226-fa42ec403d17,找到对应项后根据自己机器情况(X86/X64)选择下载。
    Microsoft SQL Server Native Client 2008支持SQL Server 2000、2005、2008
下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c6c3e9ef-ba29-4a43-8d69-a2bed18fe73c,找到对应项后根据自己机器情况(X86/X64/IA64)选择下载。
三、至此已经可以使用UTF8进行存取了
    新建一个UTF8编码的文件,测试一下:

$connstr = array("Database"=>"test","Uid"=>"sa","Pwd"=>"xxx","CharacterSet" => "UTF-8");
$conn = sqlsrv_connect('127.0.0.1',$connstr);
if($conn==false) print_r(sqlsrv_errors(),true);
$sql = "SELECT TOP 10 * FROM table";
if($data = sqlsrv_query($conn, $sql))
{
    while($row = sqlsrv_fetch_array($data,SQLSRV_FETCH_ASSOC))
{
        print_r($row);
}
}
sqlsrv_close($conn);

四、ADODB支持
    看到上例可能要抓狂了,因为提供了全新的一套操作函数,使用起来不习惯,跟现有系统也不兼容。去下载了个最新版的ADODB后惊喜的发现它已经封装了该系列函数,帮我们解决了此问题。只需作个简单的修改:
找到/adodb/drivers/adodb-mssqlnative.inc.php,在_connect方法后有一行:
“ $connectionInfo = array("Database"=>$argDatabasename,'UID'=>$argUsername,'PWD'=>$argPassword);”
改为:
“ $connectionInfo = array("Database"=>$argDatabasename,'UID'=>$argUsername,'PWD'=>$argPassword,"CharacterSet" => 'UTF-8');”
  ADODB下载:http://adodb.sourceforge.net
OK了,测试代码:

$conn = ADONewConnection('mssqlnative');
$conn->Connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$ADODB_FETCH_MODE= ADODB_FETCH_ASSOC;
$sql = "SELECT * FROM table";
$data = $conn->GetAll($sql);
print_r($data);

五、

require 'dbconn.php';
$userId = 1; // 定义输入参数
$userName; // 定义返回值
$stmt = mssql_init("P__Test_GetData", $conn) or die("initialize stored procedure failure");
mssql_bind($stmt, "@userid", $userId, SQLINT4);
mssql_bind($stmt, "@username", $userName, SQLVARCHAR, true);
$rs = mssql_execute($stmt, false);
echo "This user name is: ".$userName;
?>

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

Expliquez l'expression de correspondance (PHP 8) et comment elle diffère du commutateur. Expliquez l'expression de correspondance (PHP 8) et comment elle diffère du commutateur. Apr 06, 2025 am 12:03 AM

Dans PHP8, les expressions de correspondance sont une nouvelle structure de contrôle qui renvoie différents résultats en fonction de la valeur de l'expression. 1) Il est similaire à une instruction Switch, mais renvoie une valeur au lieu d'un bloc d'instruction d'exécution. 2) L'expression de correspondance est strictement comparée (===), ce qui améliore la sécurité. 3) Il évite les éventuelles omissions de rupture dans les instructions de commutation et améliore la simplicité et la lisibilité du code.

See all articles