使用 Linux 上的 pdo_sqlsrv 连接 SQL Server 数据库 (linux pdo_sqlsrv)

随着企业信息化程度的不断提高,越来越多的企业将其业务系统、管理软件等全部转移到了数字化平台上。在这个数字化的时代,数据库无疑是企业不可或缺的一部分。而SQL Server作为具备完善数据管理功能的数据库应用软件,广泛应用于企业的数据库系统中。在Linux系统中使用pdo_sqlsrv来连接SQL Server数据库可以实现更好的跨平台访问,下面将简单介绍如何在Linux上使用pdo_sqlsrv连接SQL Server数据库。

一、安装 SQL Server 驱动

pdo_sqlsrv是PHP与Microsoft SQL Server通讯的一个驱动程序,使得PHP开发者可以使用PHP自身的数据库函数来操作SQL Server。安装pdo_sqlsrv需要下载 Microsoft Drivers for PHP for SQL Server ,下载地址为:https://www.microsoft.com/en-us/download/detls.aspx?id=20238。

将下载的文件复制到Linux服务器中,解压文件中的文件,用cp命令将php_pdo_sqlsrv_72_nts.so和php_sqlsrv_72_nts.so拷贝到Linux系统PHP扩展库目录下。

sudo cp /sqlsrv*/php_pdo_sqlsrv_72_nts.so /usr/lib/php/20230902/

sudo cp /sqlsrv*/php_sqlsrv_72_nts.so /usr/lib/php/20230902/

打开php.ini文件,添加扩展信息,使pdo_sqlsrv扩展生效。

sudo vim /etc/php/7.2/apache2/php.ini

在末尾添加以下两行,并保存退出。

extension=php_pdo_sqlsrv_72_nts.so

extension=php_sqlsrv_72_nts.so

二、建立数据库连接

完成上述步骤后,在PHP代码中建立连接即可使用pdo_sqlsrv操作SQL Server数据库。

$conn = new PDO(“sqlsrv:Server=$serverName;Database=$database”, $user, $pass);

其中$serverName为要连接的数据库服务器名称,$database为要连接的数据库名称,$user和$pass分别为连接数据库的用户名和密码。

三、操作SQL Server数据库

建立连接后,我们就可以使用pdo_sqlsrv操作SQL Server数据库了。例如我们要查询表中的数据:

$tsql = “SELECT Name FROM Production.Product WHERE ProductID = ?”;

$stmt = $conn->prepare($tsql);

$stmt->bindValue(1, 1, PDO::PARAM_INT);

$stmt->execute();

$row = $stmt->fetch(PDO::FETCH_ASSOC);

echo($row[‘Name’]);

其中,$tsql为要执行的SQL语句,$stmt 为预处理对象,bindValue设置指定位置的值,execute方法执行查询,fetch方法将查询记录转换成数组。

四、使用pdo_sqlsrv扩展遇到的问题

1. 出现pdo_sqlsrv.so文件找不到的错误

如果出现提示找不到pdo_sqlsrv.so文件的错误,检查配置文件的路径是否正确,可以运行命令查找pdo_sqlsrv.so的安装位置。

sudo find / -name ‘pdo_sqlsrv.so’

如果能正常地找到文件,并且并没有误删除PHP的扩展库目录下的文件,那么需要检查php.ini是否正确,或者重新编译PHP。

2. 连接不上 SQL Server 服务器

如果是Linux服务器在内网安全组里面,则需要开放相应的数据库端口,目前在SQL Server中打开1433端口来进行访问。

相关问题拓展阅读:

PHP Fatal error: Call to undefined function Home\Controller\sqlsrv_connect() in

原因为SQLSRV模块不存在。请检查该模块是否被正确安装。

如何用PHP连接SQL Server

一、环境

php5.2.5

sqlserver2023

win7

二、配置PHP

1、打开php.in将extension=php_mssql.dll的注释符号去掉。

2、打开php.in将mssql.secure_connection = Off改为on。

3、从5.2开始,php就不再提供mssql.dll了,所以要php连接sql server 2023/2023/2023必腔御陪须要使用微软提供的sql server for php 2.0/3.0

  这个文件可以上微软官网下载(SQLSRV20.EXE/SQLSRV30.EXE),然后执行到wamp\php\ext文件夹下

打拆岩开php.ini文件 在Extensions后面加上:

extension=php_sqlsrv_53_ts.dll

extension=php_pdo_sqlsrv_53_ts.dll

注:52代表php5.2 假如是php5.3就拷贝php_sqlsrv_53_ts_vc6.dll

  关于VC6和VC9的区别

VC6 版本是使用 Visual Studio 6 编译器编译的,如伍蠢果你是在windows下使用Apache+PHP的,请选择VC6版本。

VC9 版本是使用 Visual Studio 2023 编译器编译的,如果你是在windows下使用IIS+PHP的,请选择VC9版本。

以上步骤完成后需要重启apache。

1:PHP5.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是这个dll只是用来连接低版本 Sql server的(2023以下版本),在Sql server 2023及以上版本无法使用mssql_connect连接到数据库。

2:php5.3.x不再支持php_mssql.dll 拓展库了,及时使用php5.2.x中的php_mssql.dll也无法使用。 微软专门为PHP出了个SQL Server的扩展(Windows版本的),对于Windows下使用php开发SQL Server应用来说,这个扩展有利于利用SQL Server来开发php平台连接sql server数据库管理系统。

一、php5.3以下的版本连接sql server

5.3以下的版本扩展里面自带一个php_mssql.dll;接数据库的扩展,可以利用这个扩展链接数据库,(只限于链接低版本数据库)。

具体的步骤如下:

1:首先安装sql server,超级不好安装,我之前安装的是2023版本的,Windows过期后就不能用了,然后重装还装不上,最后重装系统才装上

2:确定SQL装的时候用的是混合认证模式,或SQL验证模式,然后打开php的配置文件(php.ini),开启mssql扩展 (extension=php_pdo_mssql.dll前面的分号去掉)并且需要把mssql.secure_connection = On 重启后生效。

如果比较顺利的话已经可以连接数据库了,如果连不上就需要继续低下的配置:

3: 检查ntwdblib文件的版本(php/下面和Apache/下面)下载正确的版本的 ntwdblib.dll(2023.80.194.0)覆盖现有的DLL文件,(把ntwdblib.dll,php_mssql.dll 复制到system32目录中也可以)ntwdblib.dll 用于睁颤PHP连接MSSQL2023或2023的驱动文件。

4:测试连接:mssql_connect(‘localhost,1433’, ‘用户名’, ‘密码’);

二、php5.3+连接sql server

其 实5.3以下的php版本已经很少用了,况且安全性和兼容性都银则不好,所以高版本的php还是比较常见的。实践证明低版本的php连接数据库成功率比较低 (2023以上的版本几乎不能使用),推荐使用php5.3+ php使用微软专门的扩展 SQLSRV 来连接sqlserver数据库

1:先到微软网站下载 SQL Server Driver for PHP 是一个自解压的 EXE文件,解压缩后你会得到这么几个文件:

其中的52、53表示就是php的5.2.x和5.3.x 版本,选择跟你php版本相匹配的;vc6或vc9的选择要看你使用的是什么web服务器软件,如果使用的是IIS那就选择vc9的,如果是Apache 则选择vc6的,ts和nts的选择要看你安装的php版本是线程安锋早棚全版的还是非线程安全版,ts是线程安全,nts是非线程安全。

如果不知道可以在phpinfo里看Zend Extension Build这个属性如下图:

2:将扩展拷贝到拷到php/ext目录下,在php.ini文件,添加一下代码:

extension=在ext下的pdo扩展(用于pdo)

extension=在ext下的扩展

3:重启服务器,打开phpinfo();看到以下状态就证明添加扩展成功,

4:连接测试:

“sa”,”PWD”=>”admin”,”Database”=>”db_online”);

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

if( $conn ){

echo “Connection established.\n”;

}else{

echo “Connection could not be established.\n”;

die( var_dump(sqlsrv_errors()));

}

sqlsrv_close( $conn);

?>

注意这里的连接不是用mssql_connect而是用sqlsrv_connect,在这个版本中,还有几个函数:

这个扩展为php新增了一系列sqlsrv_开头的函数,常用的如下:

sqlsrv_connect

sqlsrv_close

sqlsrv_commit

sqlsrv_errors

sqlsrv_fetch

sqlsrv_fetch_array

sqlsrv_fetch_metadata

sqlsrv_num_rows

sqlsrv_query

sqlsrv_rollback

sqlsrv_rows_affected

. . .

另外注意的是,如果使用这个扩展连接Sql server 2023以及以上版本的sql server(如sql server 2023),你还需要在机器上先安装 SQL Server Native Client

不然会出现如下错误:

array

0 =>array

0 =>string’IMSSP'(length=5)

‘SQLSTATE’ =>string’IMSSP'(length=5)

1 =>int-49

‘code’ =>int-49

2 =>string’This extension requires the Microsoft SQL Server 2023 Native Client. Access the     following URL to download the Microsoft SQL Server 2023 Native Client ODBC driver for x86:

(length=216)

‘message’ =>string’This extension requires the Microsoft SQL Server 2023 Native Client. Access the following URL to download the Microsoft SQL Server 2023 Native Client ODBC driver for x86:

(length=216)

1 =>array

0 =>string’IM002′(length=5)

‘SQLSTATE’ =>string’IM002′(length=5)

1 =>int0

‘code’ =>int0

2 =>string’ 未发现数据源名称并且未指定默认驱动程序'(length=71)

‘message’ =>string’ 未发现数据源名称并且未指定默认驱动程序'(length=71)

. . . .

解决方法:需要安装SQL Server 2023 Native Client ODBC Driver,下载安装文件sqlncli.msi,安装后就可以了。

linux pdo_sqlsrv的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux pdo_sqlsrv,使用 Linux 上的 pdo_sqlsrv 连接 SQL Server 数据库,PHP Fatal error: Call to undefined function Home\Controller\sqlsrv_connect() in,如何用PHP连接SQL Server的信息别忘了在本站进行查找喔。


数据运维技术 » 使用 Linux 上的 pdo_sqlsrv 连接 SQL Server 数据库 (linux pdo_sqlsrv)