使用 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
  • 如何用PHP连接SQL Server

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的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/162406.html<

(0)
运维的头像运维
上一篇2025-03-18 16:24
下一篇 2025-03-18 16:25

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注