php支持mssql
注意要重启服务使其生效。 一、建立连接1、odbc首先,在php程序所在的服务器设置odbc。这里32位和64位操作系统有区别。32位的从控制面板中管理工具中的数据源(odbc)直接建立就可以了,64位的要运行C:WindowsSysWOW64odbcad32.exe 从这里面设置。注意:上面只的是数据库服务器为32为的,数据源设置服务器为32位和64位两种的情况。只要两个服务器建立的数据源位数一致就好。 下面是odbc建立连接代码。 复制代码代码如下:$con = odbc_connect('odbc名称','用户名','密码'); 2、连接mssql2000复制代码代码如下:$con = mssql_connect('数据库地址','用户名','密码'); 3、连接mssql2008复制代码代码如下:$connectionInfo = array("UID"=用户名,"PWD"=密码,"Database"="数据库名称"); $con = sqlsrv_connect( 数据库地址,$connectionInfo); 二、输入查询代码 这个都一样,可以直接写入,也可以从mssql中验证好后复制过来。简单点说就是把一个sql语句赋值给一个变量。 类似下面代码复制代码代码如下:$query = "SELECT top 12 * 数据库名称 order by id desc"; 三、建立查询并取出数据1、odbc复制代码代码如下:$result = odbc_do($con,$query); while(odbc_fetch_row($result)){$变量名称 = odbc_result($result, "字段名称");}2、连接mssql2000复制代码代码如下:$result = mssql_query($con, $query); while($row =mssql_fetch_array($result)){$变量名称 = $row["字段名称"];}3、连接mssql2008复制代码代码如下:$result = sqlsrv_query($con, $query); while($row = sqlsrv_fetch_array($result)){$变量名称 = $row["字段名称"];}在php5.3及以后的版本中不附带sqlsrv库了。所以要从微软这里下载。 四、关闭连接
2. php-pdo 用 ODBC 连接 MSSQLSERVER Y也是怪麻烦的:TCP Provider: Error code 0x2746
在探索如何使用 PHP-PDO 连接 MSSQLSERVER 时,我经历了一系列困扰。最初尝试时,我遇到一个具体的错误提示,SQLSTATE[08001] SQLDriverConnect: 10054,其背后是使用 Microsoft ODBC Driver 17 的 TCP Provider 错误代码 0x2746。我逐一检查并调整,包括在配置文件中使用正确的ODBC驱动绝对路径,确保等号前后无空格等,均未解决问题。甚至更换到Odbc 驱动的较新版本,并尝试使用 PYTHON 的 PYMSSQL 作为对照,排除了与防火墙配置相关的问题,但问题依然存在。我查看了一些论坛和文档,了解到 SSL 相关配置可能与问题相关联,然而在对 /etc/ssl/openssl.cnf 文件进行调整后,问题依旧。
在尝试了微软提供的示例代码仍然无效后,我开始检查是否端口号配置错误以及操作系统版本是否兼容,但问题在于即使在 Linux 环境下,我仍旧无法连接到 MSSQLSERVER。更复杂的是,我发现 SSL 配置是部分可能的罪魁祸首,但从调整 SSL 相关配置到降低 TLS 版本后,连接问题仍然存在。这让我开始怀疑,问题可能与当前版本的 PHP-PDO 不兼容或配置中的某个细节尚未被发现。
我尝试进一步调整,但发现即使采用最新版本的 ODBC 驱动,连接问题仍然未解决。查看错误信息时,发现提示与使用 MariaDB 或其他数据库连接情况大相径庭,表明问题可能与数据库服务端相关。尝试连接 10.5.16-MariaDB 数据库时,我发现可以成功建立连接。这让我开始考虑是否应尝试其他 ODBC 接口模式,如 ODBC unified,但经过验证,这个方法在当前环境中并不适用。
问题的解决过程中,我意识到最终答案可能并非技术层面的缺陷,而可能是版本不兼容或配置细节上的疏漏。在无法解决问题后,我决定求助于专业的数据库管理工具,以辅助进行故障排查和调试。我尝试了微软自己的 GUI 工具,发现连接问题同样无法解决,这让我意识到了连接问题可能与平台或服务配置紧密相关,而非单纯的编程问题。
整个探究过程展示了在数据库连接中,可能面临的各种复杂性,从 ODBC 驱动配置到 SSL 问题,再到平台和版本兼容性。在这个过程中,我发现虽然 PHP-PDO 是一个强大的连接库,但对于特定的数据库系统如 MSSQLSERVER,仍然存在一定的挑战。解决这些问题需要细致的错误分析、广泛的资源利用和持续的实验过程。在这个探究旅程中,我深刻体验到了开发者在维护跨平台系统时所面临的复杂性和挑战。
3. 5.3不支持 mssql ,所有要用到以前的版本,官网好像只有5.3及以上版本;要用php5.3必须要用sqlsrv.dll吗
如果你需要和sql server通信需要到http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx自行下载微软提供的The SQL Server Driver for PHP。这是一个自解压文件,解压后会得到以下几个文件:
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_sqlsrv_license.rtf
SQLServerDriverForPHP.chm
SQLServerDriverForPHP_Readme.htm
其中,52,53表示PHP的5.2.X和5.3.X的版本;nts表示非线和安全,ts表示线程安全;vc6表示使用Apache作为Web Server,vc9表示使用IIS作为Web Server。
根据您的配置,将相应的DLL文件拷贝到php安装目录的ext文件夹中,接下来打开php.ini,添加以下语句打开php_sqlsrv和php_pdo_sqlsrv扩展:
——————————————————–
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_53_ts_vc6.dll
[PHP_SQLSRV]
extension=php_sqlsrv_53_ts_vc6.dll
—————————————————
这里的53表示的是php5.3,如果你的是5.2版,就改成52,如果你的PHP版本是线程安全的,那么你的PHP安装目录下应该有一个php5ts.dll,与这里的两行语句对应,如果是php5nts.dll,那么上面的语句应该是:
—————————————————————-
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_53_nts_vc6.dll
[PHP_SQLSRV]
extension=php_sqlsrv_53_nts_vc6.dll
—————————————————-
压缩包里有各个版本对于的dll文件,大家可以去仔细核查。
开启扩展后,重启apache,这样就可以连接sqlserver了,但是还有一点要注意,如果你没有安装Microsoft SQL Server 2008 R2 Native Client,必须去http://msdn.microsoft.com/en-us/library/cc296170(SQL.90).aspx下载安装,因为微软的这个扩展包需要这个支持。
一切妥当之后,就可以写php代码了,如果你下载了The SQL Server Driver for PHP,那么在解压缩后的文件夹里有一个帮助文档,你可以很容易的找到示例,在这里站长介绍一个简单的例子:
<?php
//本地测试的服务名
$serverName = “(127.0.0.1)”;
//使用sql server身份验证,参数使用数组的形式,一次是用户名,密码,数据库名
//如果你使用的是windows身份验证,那么可以去掉用户名和密码
$connectionInfo = array( “UID”=>”root”,
“PWD”=>”root2010″,
“Database”=>”master”);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn )
{
echo “Connection established.\n”;
}
else
{
echo “Connection could not be established.\n”;
die( print_r( sqlsrv_errors(), true));
}
?>
如果连接不成功,重启sql server再试。
4. php可以支持目前主流的数据库
php支持的数据库有很多噢,下面列举一下!
MySQL
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
MsSql
ms SQL是指微软的SQLServer数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。
Oracle
oracle是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
Access
Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。
PostgreSQL
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。
InterBase
InterBase是一种关系数据管理系统(Relational database management system RDBMS),它提供了在单机或多用户环境中的快速数据处理及共享的工具。InterBase的核心是提供透明的多机种支持的网络运行服务器技术。InterBase是可以在Windows 95、Windows NT、Novell NetWare及多种UNIX操作系统上运行的工具。
CUBRID
CUBRID是一个全面开源,且完全免费的关系数据库管理系统。
dBase
dBase是第一个在个人电脑上被广泛使用的单机版数据库系统。
Firebird/InterBase
Firebird特性介绍firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。
IBM DB2
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统
Informix
Informix是IBM公司出品的关系数据库管理系统(RDBMS)家族。
MaxDB
MaxDB是一种企业级数据库管理系统。
MongoDB
MongoDB 是一个基于分布式文件存储的数据库。
mSQL
mSQL(mini SQL)是一个单用户数据库管理系统,个人使用免费,商业使用收费。由于它的短小精悍,使其开发的应用系统特别受到互联网用户青睐。
SQLite
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。
SQLSRV
SQL Server(SQLSRV )是由Microsoft开发和推广的关系数据库管理系统(RDBMS)。
Sybase
美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。
tokyo_tyrant
一个可持久化数据的,好处是速度不错,而且大至兼容Memcached的文本协议,客户端可以继续使用SpyMemcached。
希望对你有帮助,谢谢采纳!
5. 求助thinkPHP3.2.2连接mssql2014提示系统不支持sqlsrv
首先 sql server 2014 安装没啥说的 链接信息自己设置
php 版本 :5.5.12
sqlsrv 驱动 微软提供了 3.0 和3.1 版本 3.0 对应php 5.4 3.1对应着5.5
PS: win7 64位系统滑薯
下载sql server 驱动
Version 3.0 supports PHP 5.4
Version 3.1 supports PHP 5.5
注意 这里下载的官方5.5驱动 是不支持64位环境的 我开始用拆让冲WAMPSERVER 64位的就无法加载sqlsrv
支旅歼持64位的请来这里下载 有区别的就是 5.5 和5.6 版本
所以这里就给 5.5 和 5.6的64位
然后把下载到的文件
php_pdo_sqlsrv_55_nts.dll
php_pdo_sqlsrv_55_ts.dll
php_sqlsrv_55_nts.dll
php_sqlsrv_55_ts.dll
放到php安装目录下的ext目录下 (ext是php5以后的 都是这个目录)
php配置加载 打开php.ini 搜索 extension 后面添加下面这些 请自己好好看清php.ini的位置
extension=php_pdo_sqlsrv_55_nts.dll
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_nts.dll
extension=php_sqlsrv_55_ts.dll
重启服务 不重启 应该就能识别了
6. php连接sql2000问题
PHP完全可以连接MSSQL的。
1.首先需要MSSQLClientTools是一个dll叫做ntwdblib.dll,它通常在MSSQLServer安装以后被到系统的system32文件夹下;如果是SQLServer就在本地,那你需要核实的是该ntwdblib.dll的版本与SQLServer的版本一致(2005对应2000.80.194.0,2000对应的是2000.2.8.0;)如果SQLServer在远程,需要将那个ntwdblib.dll拷贝到本机器的system32文件夹下;
(这里经常遇见的一个问题是,如果php<通常是较老的ntwdblib.dll>晚于SQLServer安装的话,php的ntwdblib.dll会覆盖SQLserver安装时在system32下的ntwdblib.dll,导致链接是提示:链接不上数据库)
2.核实完system32下的ntwdblib.dll之后,还需要将正确版本的ntwdblib.dll覆盖php文件夹下的ntwdblib.dll;
3.使用MSSQLServer的方法与MySQL的方法很类似;
如下:
<?php
//链接数据库
$conn=mssql_connect('IBM-F24B11ED1CCSQLEXPRESS','sa','123456');
mssql_select_db('LabMIS',?$conn);
//query语句
$Query="select*fromadmin";
$AdminResult=mssql_query($Query);
//输出结果
$Num=mssql_num_rows($AdminResult);
for($i=0;$i<$Num;$i++)
{
$Row=mssql_fetch_array($AdminResult);
echo($Row[1]);
echo("<br/>");
}
?>