Sql2008 php
Sql2008支持php的擴展插件
http://www.microsoft.com/download/en/search.aspx?q=SQL+Server+for+PHP 全部
http://www.microsoft.com/download/en/details.aspx?id=20098 我下載的
官方文档有描述:
In its continued commitment to interoperability, Microsoft has released an updated SQL Server Driver for PHP. The SQL Server Driver for PHP download is available to all SQL Server users at no additional charge. The SQL Server Driver for PHP is a PHP 5 extension that allows for the reading and writing of SQL Server data from within PHP scripts. The extension provides a procedural interface for accessing data in all editions of SQL Server 2005 and SQL Server 2008.
根据官方文档的描述,微软提供的Driver是同时提供给SQL Server 2005和SQL Server 2008两个版本使用的。所以整体的环境配置步骤如下:
2)拷贝驱动到相应的位置:
(注意:關於php.ini的位置
有的php環境使用的是軟件打包安裝的方法,一個軟件就可以安裝好php環境,
這個時候php.ini很可能實在你系統的文件夾下例如我的C:\WINDOWS/php.ini 你可以搜索電腦上的php.ini找到它
而你的軟件安裝目錄下例如我的\AppServ\php5 php.ini-dist 是不會被加載的
這個時候你要去修改真正的php.ini也就是C:\WINDOWS\php.ini
)
在Windows操作系统上配置过PHP环境的人应该都清楚,配置的时候若需要配置一个PHP的扩展,此扩展需要将相关的dll文件全部复制到PHP的扩展目录里面,然后通过修改php.ini来实现PHP的扩展,在php.ini里面需要指明扩展路径,一般情况是在最末尾添加一行:
extension_dir=""
""内的内容填写PHP的扩展目录名,约定俗成一般是放在PHP目录下的一个ext文件夹内,当然可以将目录配置到任何地方(没有测试过)。把上图解压开的dll文件拷贝到extension_dir设置的扩展目录里面。
3)修改php.ini实现扩展:
在php.ini的一大堆;extension=**.dll格式里面添加两行,此部分位于以下注释下边一般:
; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.
添加的两行内容为:
extension=php_sqlsrv_ts.dll
extension=php_sqlsrv.dll
注意=号右边是解开过后的扩展的两个驱动的文件名,必须保证此文件在配置好的扩展目录内,而且需要注意此处最初不需要带“;”。【*:在php.ini文件里面,首部分号的含义代表行注释,如果有分号的时候,服务器在读取配置的时候会略过分号这一行不去读取相关内容,只有没有加分号的行才会被服务器读取。】
这里解释一下,两个驱动程序的区别在于,php_sqlsrv_ts.dll是线程安全的驱动,如果服务器本身的环境是使用的php5ts.dll,就是用这个驱动;php_sqlsrv.dll不是线程 安全的,这种情况下,服务器运行PHP应该加载的是php5.dll
4)测试配置环境:
整个过程操作好了过后,写一个test.php测试一下配置的相关环境,测试代码如下:
<?php phpinfo(); ?>
若出现以下图片证明环境已经配置好了:
这里列举一下开发环境,以防出现不同环境有差异的地方:
OS:Windows Server 2008 x64 Enterprise Edition
WebServer:Apache 2.2.11
Database:SQL Server 2008 x64 Enterprise Edition
PHP:5.2.9
(*:在配置PHP环境的时候,如果是解压缩的版本,在Windows平台上需要拷贝PHP根目录下所有的DLL文件到Windows的目录里面,需要说明的是:Windows 32位系统的目标目录为:$:/Windows/System32,Windows 64位环境的目标目录为:$:/Windows/SysWOW64,这里$符号代表安装操作系统的盘符号。而且本文的Driver好像运行的最低PHP版本应该为5.2.6,官方文档里面说的测试版本是使用的PHP5.2.6,至于低版本是否可以运行,我没有测试。)
二连接数据库:
使用过SQL Server的人应该都清楚,SQL Server常用的有两种认证方式,一种是本地系统账户认证(Windows Authentication ),一种是使用用户名和密码(SQL Server Authentication ),第二种认证方式必须启用SQL Server的混合模式。
1.Windows Authentication连接部分代码段:
<?php $serverName = "(local)"; $connectionInfo = array("Database"=>"TestingInfo","ConnectionPooling"=>false); $conn = sqlsrv_connect( $serverName,$connectionInfo); if( $conn == false) { echo "连接失败!"; die( print_r( sqlsrv_errors(), true)); } ?>
2.SQL Server Authentication连接部分代码段:
<?php $serverName = "(local)"; //資料庫伺服器位址
$uid = "sa"; //資料庫用戶名
$pwd = "Admin78999"; //資料庫密碼
$db_name="DB_FMDISP"; //資料庫名 $connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>$db_name);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn == false)
{
echo "Connect error!";
die( print_r( sqlsrv_errors(), true));
}
//do sql
$query = sqlsrv_query($conn, "SELECT * FROM DB_FMDISP.dbo.tb_user");
if($query === false )
{
echo "Error in executing query.</br>";
die( print_r( sqlsrv_errors(), true));
}
//show the data
while($row = sqlsrv_fetch_array($query)){
echo $row['uid']."-----".$row['uname']."-----".$row['upwd']."<br/>";
} /* Free statement and connection resources. */
sqlsrv_free_stmt($query);
sqlsrv_close($conn); ?>
参考官方提供的英文原文档,针对参数$connectionInfo做一个简单说明,因为$connectionInfo是一个Hash表结构,下边参数格式为:
Key[DataType]:
Description(Default Value):键[数据类型]:描述(默认值)
【1】APP[String类型]:
使用的应用程序名称【*:我自己不太懂得这个地方的意义,不好意思】(没有默认值)
【2】ConnectionPooling[1或true为打开连接池,0或false为关闭连接池]:
用来设置是否打开SQL Server的连接池功能(默认值为true(1))
【3】Database[String类型]:
连接的数据库的名称,所有连接提供的数据库名称类似ASP.NET里面web.config的连接字符串里面的数据库实例名,如果设置了Database的连接属性,驱动会默认使用SQL Server支持的Transact-SQL脚本来操作所有提供的数据库实例,包括添加、删除、查询、修改等各种操作(默认为登陆的操作系统里面的数据库,我没有测试过,应该是直接运行程序的(local))
【4】Encrypt[1或true为执行加密,0或false为不执行加密]:
设置是否对传入服务器的SQL脚本执行加密操作,当然如果使用加密操作会对系统性能存在一定影响,不过影响不明显(默认为false(0))
【5】Failover_Partner[String类型]:
提供一个服务器镜像,此属性应该是用于主服务器Down掉的情况,当主服务器Down掉的时候,提供一个备份的数据库和服务器的实例镜像作为备份的服务器处理。(未设置默认值)
【6】LoginTimeout[Integer类型]:
提供连接的超时时间,时间单位为秒。(未设置)
【7】PWD[String类型]:
当使用SQL Server Authentication认证方式的时候需要提供该属性,该属性为登陆用户的密码。(未设置任何值)
【8】QuotedId[1或true就是用SQL-92标准,0或false就是用遗留的标准]:
设置使用SQL脚本的标准是使用SQL-92标准还是使用遗留的Transact-SQL标准。(默认值为true(1))
【9】TraceFile[String类型]:
此属性主要为监控数据使用,可用于调试或者维护,它的值为一个路径,SQL Server会将所有的数据执行操作写入该路径,至于具体内容是什么,我没有使用过。(未设置默认值)
【10】TraceOn[1或true打开监控,0或false关闭监控]:
是否打开ODBC连接方式的监控。(默认值false(0))
【11】TransactionIsolation[常量值]:
提供数据库的事务级别(SQLSRV_TXN_READ_COMMITTED)
常量值包括
SQLSRV_TXN_READ_UNCOMMITTED,
SQLSRV_TXN_READ_COMMITTED,
SQLSRV_TXN_REPEATABLE_READ,
SQLSRV_TXN_SNAPSHOT,
SQLSRV_TXN_SERIALIZABLE
【12】TrustServerCertificate[1或true设置为客户端限制,0或false设置为客户端不限制]:
如果设置为 true,则使用 SSL 对通道进行加密,但不通过证书链对可信度进行验证。如果将TrustServerCertificate 设置为 true 并将 Encrypt 设置为 false,则不对通道进行加密。可识别的值为true、false、yes 和 no。有关更多信息,请参见 SQL Server 2005 Books Online(《SQL Server 2005 联机丛书》)中的“Encryption Hierarchy”(加密层次结构)和“Using Encryption Without Validation”(使用不验证的加密)。(默认值:false(0))
【13】UID[String类型]:
当使用SQL Server Authentication认证方式的时候需要提供该属性,该属性为登陆用户的用户名。(未设置任何值)
【14】WSID[String类型]:
监控计算机名称,此属性很少用。(未设置任何值):
API 参考 (SQL Server Driver for PHP)
用于 SQL Server Driver for PHP 的 API 名称是 sqlsrv。所有 sqlsrv函数都以 sqlsrv_打头,后跟动词或名词。后跟动词的函数用于执行特定操作,而后跟名词的函数用于返回特定形式的元数据。
SQL Server Driver for PHP 包含以下函数:
函数 | 说明 |
sqlsrv_begin_transaction | 开始事务。 |
sqlsrv_cancel | 取消语句;并放弃相应语句的所有未决结果。 |
sqlsrv_client_info | 提供有关客户端的信息。 |
sqlsrv_close | 关闭连接。释放与相应连接关联的所有资源。 |
sqlsrv_commit | 提交事务。 |
sqlsrv_configure | 更改错误处理和日志记录配置。 |
sqlsrv_connect | 创建一个连接,并将其打开。 |
sqlsrv_errors | 返回关于上一操作的错误和/或警告信息。 |
sqlsrv_execute | 执行预定义语句。 |
sqlsrv_fetch | 使下一行的数据可供读取。 |
sqlsrv_fetch_array | 以数值索引数组、关联数组或这两种数组的形式检索下一行的数据。 |
sqlsrv_fetch_object | 以对象形式检索下一行的数据。 |
sqlsrv_field_metadata | 返回字段元数据。 |
sqlsrv_free_stmt | 关闭语句。释放与相应语句关联的所有资源。 |
sqlsrv_get_config | 返回指定配置设置的值。 |
sqlsrv_get_field | 按索引检索当前行中的字段。可以指定 PHP 返回类型。 |
sqlsrv_has_rows | 检测结果集是否具有一行或多行。 |
sqlsrv_next_result | 使下一结果可供处理。 |
sqlsrv_num_rows | 报告结果集中的行数。 |
sqlsrv_num_fields | 检索活动结果集中的字段数。 |
sqlsrv_prepare | 准备 Transact-SQL 查询,但不执行该查询。隐式绑定参数。 |
sqlsrv_query | 准备 Transact-SQL 查询,并将其执行。 |
sqlsrv_rollback | 回滚事务。 |
sqlsrv_rows_affected | 返回有所修改的行的数目。 |
sqlsrv_send_stream_data | 在每次调用函数时向服务器发送最多八千字节 (8 KB) 的数据。 |
sqlsrv_server_info | 提供有关服务器的信息。 |
总结:
因为没有时间讲解连接过后的关于SQL的基本操作和详细操作,仅仅提供一个实例供参考,望谅解,若有笔误的地方,请指点:silentbalanceyh@126.com。还有更加详细的内容请参考驱动下载过后的官方文档,下载驱动过后微软提供了详细的CHM官方文档,如何使用驱动都提供了部分例子。
Sql2008 php的更多相关文章
- 在SQL2008查找某数据库中的列是否存在某个值
在SQL2008查找某数据库中的列是否存在某个值 --SQL2008查找某数据库中的列是否存在某个值 create proc spFind_Column_In_DB ( @type int,--类型: ...
- 测试环境搭建心得 vs2008+SQL2008 PHP+APACHE+mysql Team Foundation Server2013
大四即将结束,大学的最后一个假期,找到一份实习工作,担任测试工程师.在过年前的最后一周入职,干了一周的活儿.主要工作就是搭建测试环境. VMware 主要熟悉VMware软件,装系统基本都没什么问题. ...
- Microsoft SQL Server 2008 R2官方中文版(SQL2008下载).rar
Microsoft SQL Server 2008 R2官方中文版(SQL2008下载).rar
- SQL2008还原数据库无法还原问题
SQL2008还原备份的SQL2008的.bak文件时会报错,大部分原因是因为当前登录的版本是2005的,因而无法还原用SQL2008备份的数据,结局的办法是去掉登录的服务器名称后面的后缀SQLEXP ...
- SQL-2008函数大全
SQL Server 2008 函数大全(完整版) SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合.1. 字符串函数 函数 名称 参数 示例 说明 ascii(字符串表达式) se ...
- SQL2008代理作业出现错误: c001f011维护计划创建失败的解决方法
SQL2008数据库总会出现从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA475916F} 的 COM 组件创建实例失败,原因是出现以 ...
- SQL2008完全卸载详解(图解)
一. SQL2008卸载. 1.从控制面板卸载 1)点击计算机右下角“开始”,点击“控制面板”
- SQL2008触发器
最近第一次接触触发器,感觉很是新奇,也很是蛋疼,因为老板要求的是在触发器中获取用户信息,并把对表的操作进行记录,后者实现到时比较简单,前者确实让我纠结了好久,其实百度了一下关于SQL2008触发器的文 ...
- SQL2008中Merge的用法
在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge ...
- 升级Win2010后, 打开SQL2008 附加数据库提示 5120错误
在win2010系统上使用sql2008进行附加数据库(包括在x86系统正在使用的数据库文件,直接拷贝附加在X64系统中)时,提示无法打开文件,5120错误. 这个错误是因为没有操作权限,所以附加的时 ...
随机推荐
- Hibernate中get和load的区别
get获取的对象立即执行sql查询数据库中当前实体表中的数据,如果外键关联的其他实体表如果配置了懒加载关闭,则也会查询出外键关联的其他实体表中的数据,否则外键关联的其他实体表则以代理对象表示(称其为代 ...
- storm的数据源编程单元Spout学习整理
Spout呢,是Topology中数据流的源头,也是Storm针对数据源的编程单元.一般数据的来源,是通过外部数据源来读取数据项(Tuple),并读取的数据项传输至作业的其他组件.编程人员一般可通过O ...
- HDU 4539 郑厂长系列故事――排兵布阵(曼哈顿距离)
这虽然是中文题,然而没看懂,不懂的地方,就是在曼哈顿距离这块,网上搜索了一下,写了个程序,是测试曼哈顿距离的. 曼哈顿距离:两点(x1,y1)(x2,y2)的曼哈顿距离为|x1-x2|+|y1-y2| ...
- oracle 运维基础
setupDatabase() { runStr=" cd $BASE_INSTALL_DIR/database nohup ./runInstaller -silent -force -r ...
- Studio--代理设置(SDK下载代理设置)
为啥Android Studio有代理一说呢.比如我们要下载某个插件,但是这个插件又被tc墙了,所以这个时候需要FQ才能安装.FQ其中的一种方式就是使用VPN,配置如下图: 输入VPN的IP和PORT ...
- SQL Server 2008 建立分区表 脚本
/*第一步:创建分区函数*/Create partition function Part_func_Bag(varchar(20)) as range right /*正式区间for values(N ...
- Mac下搭建cocos2d 和cocos2d -x 环境
来源:http://blog.csdn.net/duxinfeng2010/article/details/7985024 cocos2d是一个开源框架,用于构建2D游戏.演示程序和其他图形界面交互应 ...
- Intellisense for Xrm.Page in CRM 2011
Intellisense for Xrm.Page in CRM 2011 In CRM 2011 javascripts for crm forms can be stored externally ...
- 向sqlserver插入二进制数据(比如图片)
sqlserver插入二进制数据 偶然在sqlteam看到了,真是够绝,这都想得出来,很便捷的一个方式(只适用于SQL SERVER 2005+),代码如下: CREATE TABLE myTable ...
- LayoutInflater的实例化
获得 LayoutInflater 实例的三种方式 1. LayoutInflater inflater = getLayoutInflater(); //调用Activity的getLayoutI ...