十年专注于品牌网站建设 十年专注于品牌网站建设,低调、有情怀的网络应用服务商!
南昌百恒网络微信公众号 扫一扫关注
小程序
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络微信小程序

百恒网络

南昌百恒网络

php连接sql server服务器环境配置方法及注意事项

百恒网络 2015-05-04 3560

在做数据对接时难免会遇到跨库查询,例如,做购物商城时就涉及到库存查询,所以就要与实际库存软件对接,若是同一类数据那就好办,互联网程序大多都是用PHP开发,通常是结合MYSQL数据。但中小型库存软件大多都是用 microsoft SQL server 在此由南昌网站建设公司百恒网络技术工程师向大家介绍PHP连接SQL server 服务器环境配置及注意事项。

在早期我们使用PHP自带的php_mssql.dll,但PHP升级到PHP5.3以上,就不再支持该库了,大家也不用担心,现在只要在服务器上安装相应的扩展即可以解决该问题,即使PHP版是5.2 也是没问题的。微软专门为PHP出了个SQL Server的扩展(Windows版本的),对于Windows下使用php开发SQL Server应用来说,这个扩展有利于利用SQL Server来开发php平台连接sql server数据库管理系统。

1.找到PHP版本相对应的组件并在PHP.ini中进行扩展。接下来详细介绍

先到微软网站下载 SQL Server Driver for PHP,链接地址:http://www.microsoft.com/en-us/download/details.aspx?id=20098,你也可以在百度搜SQLSRV20 下载,选择你认为安全的下载地址进行下载,百恒网络技术工程师建议到微软的官网下载。对服务器环境配置应该谨慎行事,同时注意下SQLSRV20 后面的数值,表对应不同版本。例如,20对应的就是5.2.x 或 5.3.x版本的,下载后该文件是一个.exe的压缩包,解压后即可以看到。

PHP扩展文件

更高版本的PHP扩展文件

高版本的PHP扩展文件

顺便介绍下:

其中的52、53表示就是php的5.2.x和5.3.x 版本,选择跟你php版本相匹配的;

选择vc6或vc9的主要看你使用的是什么web服务器软件,如果使用的是IIS那就选择vc9的,如果是Apache则选择vc6的.

至于ts和nts,就要看你安装的php版本是线程安全版的还是非线程安全版,ts是线程安全,nts是非线程安全.

如何查看是线程还是非线程通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。

比如我的配置是IIS FastCgi + php-5.3.2-nts-Win32-VC9-x86,那么就应该选择php_sqlsrv_53_nts_vc9.dll 文件并把它放到php安装目录的ext目录下,并在php.ini中添加 extension=php_sqlsrv_53_nts_vc9.dll

重启IIS或Apache接下来运行phpinfo()就可以看到如图所示,表示PHP环境配置好了,接下来配置SQL server 数据查询相关驱动。

SQL server

2.安装sqlncli.msi(SQL Server Native Client),需要注意合适的版本及位数,有的是64位的,有的是32位的,支持SQL server 版本也不一样,2005、2008、2012等。下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=15748

关于数据库访问及数据读取,php有份用户手册,里面比较详细,可以查阅,地址:http://php.net/manual/zh/book.sqlsrv.php

实例代码,如下:

/* 数据库连接 */

$serverName = "serverNamesqlexpress";

$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");

$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn === false ) {

die( print_r( sqlsrv_errors(), true ));

}

if ( sqlsrv_begin_transaction( $conn ) === false ) {

die( print_r( sqlsrv_errors(), true ));

}

/* 初始化参数 */

$orderId = 1; $qty = 10; $productId = 100;

/* 插入数据 */

$sql1 = "INSERT INTO OrdersTable (ID, Quantity, ProductID)

VALUES (?, ?, ?)";

$params1 = array( $orderId, $qty, $productId );

$stmt1 = sqlsrv_query( $conn, $sql1, $params1 );

/* 更新数据 */

$sql2 = "UPDATE InventoryTable

SET Quantity = (Quantity - ?)

WHERE ProductID = ?";

$params2 = array($qty, $productId);

$stmt2 = sqlsrv_query( $conn, $sql2, $params2 );

/* If both queries were successful, commit the transaction. */

/* Otherwise, rollback the transaction. */

if( $stmt1 && $stmt2 ) {

sqlsrv_commit( $conn );

echo "Transaction committed.

";

} else {

sqlsrv_rollback( $conn );

echo "Transaction rolled back.

";

}

?>

以上操作步骤是百恒网络技术工程师实际操作经验,希望此文对广大站长有所帮助。

专业专注于南昌网站设计,为用户提供高品质的网络产品和优质的服务是我们始终追求的目标!

400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络小程序

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
售后服务 售后服务
 
备案专线 备案专线
 
×