php 2007-7-12 22:30
用PHP调用数据库的存贮过程!
用PHP调用数据库的存贮过程!
作者:fox4000
昨天,看到一个战友问是否可以用php调用存贮过程,感觉应该是可以的,所以,马上进行了实验,非常的成功!非常出乎我的意料之外!因此,写出来,给大家参考!
大家知道,存储过程是在服务器端的一个脚本程序,执行起来速度很快,但它也有一个缺点,就是依赖与一个固定数据库,移植性不好!
我的上回文章,提到了用com组件是可以访问ado以及相关的组件,无论是自己建的还是系统带的,都可以扩展系统的功能,但现在php不支持dcom/com+,但相信它的下一个版本应该是支持的。
不说这么多了,我们马上试一下吧。
下面是我的一个简单的存贮过程
CREATE PROCEDURE [sp_mystoreprocedure] AS
select companyname, contactname, city from customers
其实,还可以写比较复杂的,可惜我对此研究不深,只好取简单了!
下面是我的php文件
[color=#000000][color=#0000cc]<[/color][color=#0000cc]?[/color]
[color=#ff0000]define[/color] [color=#0000cc]([/color][color=#ff00ff]"OLEDB_CONNECTION_STRING"[/color][color=#0000cc],[/color]
[color=#ff00ff]"Provider=SQLOLEDB; Data Source=zzb; Initial Catalog=Northwind; User ID=sa; Password="[/color][color=#0000cc])[/color][color=#0000cc];[/color]
[color=#0000ff]$[/color][color=#008080]dbc[/color] [color=#0000cc]=[/color] [color=#0000ff]new[/color] [color=#ff0000]COM[/color][color=#0000cc]([/color][color=#ff00ff]"ADODB.Connection"[/color][color=#0000cc])[/color][color=#0000cc];[/color]
[color=#0000ff]$[/color][color=#008080]dbc[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]Open[color=#0000cc]([/color]OLEDB_CONNECTION_STRING[color=#0000cc])[/color][color=#0000cc];[/color]
[color=#0000ff]$[/color][color=#008080]command[/color] [color=#0000cc]=[/color] [color=#ff00ff]"sp_mystoreprocedure"[/color][color=#0000cc];[/color]
[color=#0000ff]$[/color][color=#008080]rs[/color] [color=#0000cc]=[/color] [color=#0000ff]$[/color][color=#008080]dbc[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]Execute[color=#0000cc]([/color][color=#0000ff]$[/color][color=#008080]command[/color][color=#0000cc])[/color][color=#0000cc];[/color] [color=#ff9900]// Recordset
[/color]
[color=#0000ff]$[/color][color=#008080]i[/color] [color=#0000cc]=[/color] 0[color=#0000cc];[/color]
[color=#ff0000]echo[/color] [color=#ff00ff]'<table cellSpacing="1" cellPadding="3" width="600" align="center" bgColor="#000000" border="0">
<tr vAlign="bottom" bgColor="#9999cc">
<th>Directive</th>
<th>Local Value</th>
<th>Master Value</th>
</tr>'[/color][color=#0000cc];[/color]
[color=#0000ff]while[/color] [color=#0000cc]([/color][color=#0000cc]![/color][color=#0000ff]$[/color][color=#008080]rs[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]EOF[color=#0000cc])[/color] [color=#0000cc]{[/color]
[color=#0000ff]$[/color][color=#008080]i[/color] [color=#0000cc]+[/color][color=#0000cc]=[/color] 1[color=#0000cc];[/color]
[color=#0000ff]$[/color][color=#008080]fld0[/color] [color=#0000cc]=[/color] [color=#0000ff]$[/color][color=#008080]rs[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]Fields[color=#0000cc]([/color]0[color=#0000cc])[/color][color=#0000cc];[/color]
[color=#0000ff]$[/color][color=#008080]fld1[/color] [color=#0000cc]=[/color] [color=#0000ff]$[/color][color=#008080]rs[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]Fields[color=#0000cc]([/color]1[color=#0000cc])[/color][color=#0000cc];[/color]
[color=#0000ff]$[/color][color=#008080]fld2[/color] [color=#0000cc]=[/color] [color=#0000ff]$[/color][color=#008080]rs[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]Fields[color=#0000cc]([/color]2[color=#0000cc])[/color][color=#0000cc];[/color]
[color=#ff0000]print[/color] [color=#ff00ff]'<tr vAlign="baseline" bgColor="#cccccc">
<td bgColor="#ccccff"><b>'[/color][color=#0000cc];[/color]
[color=#ff0000]print[/color] [color=#0000ff]$[/color][color=#008080]fld0[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]value[color=#0000cc];[/color]
[color=#ff0000]print[/color] [color=#ff00ff]'</b><br></td>
<td align="middle">'[/color][color=#0000cc];[/color]
[color=#ff0000]print[/color] [color=#0000ff]$[/color][color=#008080]fld1[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]value[color=#0000cc];[/color]
[color=#ff0000]print[/color] [color=#ff00ff]'</td><td align="middle">'[/color][color=#0000cc];[/color]
[color=#ff0000]print[/color] [color=#0000ff]$[/color][color=#008080]fld2[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]value[color=#0000cc];[/color]
[color=#ff0000]print[/color] [color=#ff00ff]'</td></tr>'[/color][color=#0000cc];[/color]
[color=#0000ff]$[/color][color=#008080]rs[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]MoveNext[color=#0000cc]([/color][color=#0000cc])[/color][color=#0000cc];[/color]
[color=#0000cc]}[/color]
[color=#ff0000]print[/color] [color=#ff00ff]'</TABLE>'[/color][color=#0000cc];[/color]
[color=#0000ff]$[/color][color=#008080]rs[/color][color=#0000cc]-[/color][color=#0000cc]>[/color]Close[color=#0000cc]([/color][color=#0000cc])[/color][color=#0000cc];[/color]
[color=#0000cc]?[/color][color=#0000cc]>[/color]
[/color]
注意的是,你的服务器必须打开!另外,就是不能写错存贮过程的名称。否则会出项致命的错误,而且,你根本就不知道错误在那里,这就是php文件对错误处理的不好之处,但相信它以后是会改进的。
我学php需然有很长时间了,但发现要真正用好它,不那么容易,但它确实也超出了我的想象,有些东西真的很奇妙,真是,不用不知道,一用真奇妙!