php调用存储过程.pdf
php调用存储过程
一、PHP如何调用数据库的存储过程:
本文只讨论PHP怎么使用已有的存储过程,而不讨论如何编写存储过程。存储
过程有自己的输入变量和返回值,所以当php调用时先要传递给存储过程输入
变量。听起来很想php的函数调用。而返回值,实际上就返回的是资源
(resource)。处理返回的资源和普通php执行sql返回的资源一样处理。
1、MSSQLServer数据库:
//连接sqlserver数据库
$ms_Host=localhost;
$ms_Username=root;
$ms_Password=root;
$ms_Database=unicom;
$mssql_db=mssql_connect($ms_Host,$ms_Username,$ms_Password);
mssql_select_db($ms_Database,$mssql_db);
$uc_uid=$_POST[uc_uid];
//调用名为pr_login_from_sina的存储过程
//有out返回参数的存储过程
$procedure=mssql_init(pr_login_from_sina,$mssql_db);
mssql_bind($procedure,@uid,$uc_uid,SQLVARCHAR);//给存储过程传递
参数(tinyint用INT1,int用INT4,smallint用INT2,bigint用VARCHAR)
$resource=mssql_execute($procedure);//执行存储过程,并得到返回资源
mssql_free_statement($procedure);//释放存储过程
mssql_close($mssql_db);//关闭连接
//返回的资源同用query执行的sql所返回的资源可以同样处理
if(mssql_num_rows($resource)!=0)
{
$result=mssql_fetch_array($resource);//得到用户信息
echo$result[user_pwd];//输出用户的密码
}
//只有return返回的存储过程:在php4中能够用mssql数据库内置的RETVAL
返回得到return的值。而php5中存在这一定问题,只能用其他方法获得。
//php4中:
$procedure=mssql_init(pr_add_remain_community_id,$mssql_db);
mssql_bind($procedure,RETVAL,$val,SQLINT4);//参数类型根据
return返回的类型而决
mssql_bind($procedure,@remain_id,$uc_uid,SQLVARCHAR);
$return=mssql_execute($procedure,false);
var_dump($val);
//php5中:
$query=declare@resultint\n;
$query.=execute@result=pr_add_remain_community_id$uc_uid\n;
$query.=select@resultresult\n;
$resource=mssql_query($query,$mssql_db);
if(mssql_num_rows($resource)!=0)
{
$result=mssql_fetch_array($resource);//得到用户信息
echo$result[result];//输出返回值
}
2、Mysql数据库:
mysql比较麻烦。mysql数据库需要在mysql5.0以上配合php5的mysqli模块
进行操作。其中根据存储过程返回值的形式不同,调用和获得返回值所用到的
语句有所不同。
//连接sqlserver数据库
$my_Host=localhost;
$my_Username=root;
$my_Password=root;
$my_Database=unicom;
$mysql_db=mysqli_connect($my_Host,$my_Username,$my_Password);
mysqli_select_db($my_Database,$mysql_db);
$uc_uid=$