php调用SQL SERVER 2008及以上版本的方法
来源:互联网 发布:知乎怎么做微信销售 编辑:程序博客网 时间:2024/05/22 02:01
今天遇到php连接mssql问题,按照网上各种尝试,最后成功,再此记录下。由于 php 5.3以后就不支持mssql,如果继续用mssql_打头的函数,那是行不通了,要下载相应的The SQL Server Driver for PHP。现在微软官网有四个安装包:SQLSRV20/30/31/32.exe
用于 SQL Server Driver for PHP 的 API 名称是 sqlsrv。所有 sqlsrv 函数都以 sqlsrv_ 打头,后跟动词或名词。后跟动词的函数用于执行特定操作,而后跟名词的函数用于返回特定形式的元数据。
以下是官方对各php driver支持的php版本及对数据库支持的清单:
- Version support for PHP is as follows
- Version 3.2 supports PHP 5.6, 5.5, and 5.4
- Version 3.1 supports PHP 5.5 and 5.4
- Version 3.0 supports PHP 5.4.
- Versions 3.2 and 3.1 of the driver require Microsoft ODBC Driver 11 (or higher). You can download the Microsoft ODBC Driver 11 for SQL Server from the Microsoft® ODBC Driver 11 for SQL Server® - Windows page.
- Version 3.0 requires the x86 version of Microsoft SQL Server 2012 Native Client.
- Version 2.0 requires the x86 version of Microsoft SQL Server 2008 R2 Native Client.
以下是官方提供的API函数列表及说明,函数名链接到官网查看demo!列表中粗字体函数是常用的。
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
提供有关服务器的信息。
我也上一些代码以供参考:$MSSQL_SERVER="localhost";$connectionInfo = array( "Database"=>"DBNAME", "UID"=>"sa", "PWD"=>"123456");
/*********************//* *//* Version : 5.1.0 *//* Author : RM *//* Comment : ms_conn.php *//* *//*********************///MSSQL连接部分function open_mssqlconn( ){global $mssql_connection;include_once( "oa_config.php" );if (!$mssql_connection){ $mssql_link=sqlsrv_connect( $MSSQL_SERVER, $connectionInfo); if (!$mssql_link){echo "Could not connect.\n";die( print_r( sqlsrv_errors(), true)); } return $mssql_link;} else {return $mssql_connection;}}//SQL查询function mssqlquery($Q){if (!$mssql_connection){$mssql_connection=open_mssqlconn();}$cursor=sqlsrv_query($mssql_connection,$Q);if ( !$cursor ){echo "SQL查询出错.\n";die( print_r( sqlsrv_errors(), true));}return $cursor;}//执行SQLfunction mssqlexec($Q){$stmt = sqlsrv_prepare( $mssql_connection, $Q);if( $stmt===false ){ echo "SQL预编译出错.\n"; return false; die( print_r( sqlsrv_errors(), true)); }/* Execute the statement. Display any errors that occur. */if( sqlsrv_execute( $stmt)===false){ echo "执行SQL出错.\n"; return false; die( print_r( sqlsrv_errors(), true));}/* Free the statement and connection resources. */sqlsrv_free_stmt($stmt);return true;}if (!$mssql_connection){ $mssql_connection=open_mssqlconn();}调用写封装好的方法:
//获取存货名称public function getcinvname(){$cinvcode=iconv("UTF-8","GBK", $_POST["cinvcode"]);$query="select cinvname from inventory where cinvcode='{$cinvcode}'";$cursor=mssqlquery($query);$cinvname='';while($ROW=sqlsrv_fetch_array($cursor,SQLSRV_FETCH_ASSOC)){$cinvname=iconv("GBK","UTF-8",$ROW["cinvname"]);}sqlsrv_free_stmt($cursor);$this->returnajax(0,$cinvname);}
- php调用SQL SERVER 2008及以上版本的方法
- sql server 2008以上版本常用函数简要说明
- andriod 4.0以上版本不调用onConfigrationChange方法的解决办法
- vmware 9 及以上版本收缩空间的方法
- 适用于MyEclipse2014及以上版本的通用破解方法
- SQL2008及以上版本在Window10的安装方法
- Windows 2008服务器环境PHP连接SQL Server数据库的配置及连接方法
- SQL Server 2008 查版本及 位数
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
- VS2012及以上版本中,禁用_s版本函数的方法
- SQL Server 2008怎样编辑200行以上的数据
- 5.3以上的php版本Zend
- ms sql server 2005版本以上查询数据库索引信息
- SQL Server 中将中文转为拼音首字母的函数及调用方法
- sql server同一字段多条记录的合并( sql server 2008以上)
- Excel2007以上版本的导入方法
- Excel2007以上版本的导入方法
- nyoj-58 最少步数(DFS)
- HTML5实践 -- 三步实现响应式设计
- Windows代码页
- Another lottery
- NYOJ58最少步数(BFS)
- php调用SQL SERVER 2008及以上版本的方法
- PL/SQL报错:无法解析指定的连接标识符
- Android编译时TARGET_OUT_ROOT/TARGET_OUT变量的由来
- Qt的Signal和Slot机制(一)
- c++primer exercises 7.0
- mybatis 一对一的映射(两种方式)
- 淡入动画
- hdu2421(数学题)
- 多线程处理mysql数据