php sqlserver存储过程,PHP操作MSSQL存储过程大致流程 - YangJunwei

PHP操作MSSQL存储过程在最近的项目中用到不少,这里总结一下。

1、连接MSSQL数据库 mssql_connect

if( !defined('MSDB_HOST') ){ define('MSDB_HOST', '1.2.3.4'); }

if( !defined('MSDB_PORT') ){ define('MSDB_PORT', 1433); }

if( !defined('MSDB_USER') ){ define('MSDB_USER', 'root'); }

if( !defined('MSDB_PASS') ){ define('MSDB_PASS', 'root'); }

if( !defined('MSDB_NAME') ){ define('MSDB_NAME', 'UserDB'); }

$link_mssql = mssql_connect(MSDB_HOST, MSDB_USER, MSDB_PASS) or die("SQL SERVER 数据库连接失败!");

mssql_select_db(MSDB_NAME, $link_mssql) or die("Select database failure");

2、初始化存储过程 mssql_init

以存储过程名称 user_reg 为例:

$stmt = mssql_init('user_reg');

3、绑定参数变量 mssql_bind

输入参数:

mssql_bind( $stmt, '@user_name', $user_name, SQLVARCHAR ); // 注意第三个参数必须为变量,否则报错

mssql_bind( $stmt, '@user_pass', $user_pass, SQLVARCHAR );

输出参数:

mssql_bind( $stmt, '@outvar', $output, SQLVARCHAR, true ); // 第五个参数为是否为输出标记

4、执行存储过程 mssql_execute

$retult = mssql_execute($stmt, true); // 第二个参数为是否返回结果集,更改设置与返回值无关

5、断开连接 mssql_free_statement

mssql_free_statement($stmt);

最后需要注意一下

PHP操作MSSQL存储过程,常态下输出结果集与输出参数二者不能同时得到,先看如下:

mssql_bind( $stmt, '@outvar', $output, SQLVARCHAR, true );

// mssql_execute第二个参数选择 true 时,上边的$output能输出参数,却不能返回结果集

$result = mssql_execute($stmt, true);

echo $output.'
';

*/

// mssql_execute第二个参数选择 false 时,返回结果集,上边的$output就不能输出参数

$result = mssql_execute($stmt, false);

$records = mssql_fetch_array($result);

print_r($records);

如果想同时得到结果集和输出参数,可以使用

mssql_next_result($result);

注释:为每一个结果集调用一次mssql_next_result,在最后一个结果集返回之后,你再调用 mssql_next_result 就会得到返回值FALSE,这时候,你就可以访问输出参数了。

如果过程中需要做一下调试,可以使用如下代码:

die( 'MSSQL error: ' . mssql_get_last_message() );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值