php调用SQL SERVER 2008及以上版本的方法
2015-08-05 20:21
761 查看
今天遇到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.
我也上一些代码以供参考:
用于 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; } //执行SQL function 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); }
相关文章推荐
- Yii 1.x IOS推送
- FileOutputStream中的 3种write方式
- zendframework form with captcha(Base on ZendFrameWork2.4)
- php实现分页调取数据库记录
- zend 环境
- 5种php加密工具zendGuard、ionCube、SourceCop、SourceGuardian、phpShield
- yii 时间控件 输入框
- 发送邮件(遵循smtp协议即简单的邮件发送协议)
- php数组
- php字符串
- 关系:CGI,FastCGI,PHP-CGI与PHP-FPM
- 概念:CGI,FastCGI,PHP-CGI与PHP-FPM
- php异常处理
- 以源码编译的方式安装PHP与php-fpm
- PHP array系列函数
- thinkphp 整合swfupload
- PHP关联数组的10个操作技巧
- php 学习,自己看
- php mysql注入攻击解决方案
- php mysql 事务 锁 小计