谢谢,雪悟,二球.

Pear DB 新手入门指南(转)

上一篇 / 下一篇  2006-12-18 17:46:11 / 个人分类:全是帅的不能再输啦

Pear DB新手入门指南
)T'uEk R*g |#x0
(原文:《Quick Start Guide to Pear DB》)PHPChina 开源社区门户\)VxhW2F1Y

翻译:陈刚(GangChen@wiscom.com.cn)

No#{Jt2l T0

 PHPChina 开源社区门户1q#u'f+E7T4O

    

(bg+a9U-[H!O1@QY%cw0

1.       简介-------------------------------------------------------------------------------------2PHPChina 开源社区门户1[G`S`?M"y

2.       下载、安装Pear-------------------------------------------------------------------------2PHPChina 开源社区门户%hE!Q,Z+Om?)M

3         使用Pear DB----------------------------------------------------------------------------2

!y;[!R3t6hJ r0

3.1.1  连接,断开数据库PHPChina 开源社区门户KiK*Mb2q:o+U vuy

3.1.2  执行数据库PHPChina 开源社区门户 ON~ |$ccXt

3.1.3  获得select的数据

+w G!B(Q R*y(|},n0

3.1.3.1 获取数据的函数PHPChina 开源社区门户%L aE*@FT

3.1.3.2 选择获取数据的格式

v;H)b1Y~pN0

3.1.3.3 设置获取数据的格式PHPChina 开源社区门户(O.z0r[J0B }cfT

3.1.3.4 控制获取数据数量PHPChina 开源社区门户r:},]1E.m Y3N

3.1.3.5 清除结果,释放变量

W$[EK d\-[4b/Q.UgG0

3.1.4  快速retrieve数据

4t4j b{6y1H(ct0

3.1.5  从查询结果获得更多信息(numRows, numCols, affectedRows, tableInfo)PHPChina 开源社区门户9~3G;M.?t\#s

3.1.6  自动增长(SequencesPHPChina 开源社区门户s4rV5wp-HiL-~;t+{

3.1.7  Prepare & Execute/ExcuteMultiplePHPChina 开源社区门户di9E+mmio3rr

3.1.8  autoCommit, commit and rollback

*y!n&I3q9g0

4.       可用方法列表---------------------------------------------------------------------------10

Xa&M |i0

5         错误处理机制---------------------------------------------------------------------------12

8xD7O-OOF8ll`0

5.1        Pear DB Error获得错误信息

8IZr-y1Ne]0

5.2        Debug Pear DB ErrorsPHPChina 开源社区门户;Nq%x&yv5Z

5.3       对错误采取自动处理PHPChina 开源社区门户0G? zdj'LO2j


1.       简介PHPChina 开源社区门户B+K^ hh#c

这是一部指导我们如何使用Pear DB扩展。Pear DB,提供这样一系列的类:

5]K1}J%C6Z0

n         数据库抽象

K3p+th2gO)o0

n         高级错误处理机制PHPChina 开源社区门户(S5^!f Z(H.u;X

n         以及其它PHPChina 开源社区门户i.t6SOD KO%lp

 PHPChina 开源社区门户Ii)j!gmCm!A

2.       下载、安装Pear

B(u#A.`"}wp |!M^^ |0

由于现在Pear项目仍处于紧锣密鼓的开发之中,所以得到它的最好办法就是从CVS获得(Pear DB发行包已经跟随PHP4.0.6以后版本捆绑发布)。所以,我们只需要把Pear的根目录放到php.ini配置文件include_path中。也可以通过这样设置:_set('include_path', '/pear_base_dir').PHPChina 开源社区门户 I/R5\)u-a p

以下是strp by step示例:

"f*i DGe0
存放Pear的目录:
# cd /usr/local/lib
用“phpfi“口令登录:
# cvs -d :pserver:cvsread@cvs.php.net:/repository login
用以下命令得到所有的pear文件,同时也可以用来更新已经下载的文件。其他的参数有:"today", "last month",等。我推荐用"last week"参数,因为一般bugs的提交和修改都是每周一次。
# cvs -d :pserver:cvsread@cvs.php.net:/repository export -D "last week" php4/pear
编辑php.ini文件加上下面一段在include_path处:/usr/local/lib/php4/pear如果没有修改的权限,可以通过这条语句在代码中实现:ini_set('include_path', 'path_to_pear');

获得PHP CVS的完全文档PHPChina 开源社区门户Km`T-L NZ

注意Pear DB必需PHP版本4.0.4以上,而在Pear中的一些其他包如:XML Parser of the pear installer scrīpt需要PHP4.0.5以上版本。PHPChina 开源社区门户'?"yKzU^D

 

Y'IBLb@-L-iw*E0

3.       使用Pear DBPHPChina 开源社区门户"?)p a#r)Ju#I

3.1        连接,断开数据库PHPChina 开源社区门户[*Yzd*n[5]5W

 
<?php
Ag4UW0[k1C0
// The pear base directory must be in your include_path
1\&\%[] g%LqL0
require_once 'DB.php';
`e2T+DL:ECX9Kb0
$user 'foo';
'[)dY6t DK0
$pass 'bar';
]cK }EOJ&f0
$host 'localhost';PHPChina 开源社区门户0pn%~ P"[0e i M?M
$db_name 'clients_db';
vwH/}+tP~*Ih0PHPChina 开源社区门户 u;G4G~ j.R;|
// Data Source Name: This is the universal connection stringPHPChina 开源社区门户^Bb \/y)r9B
$dsn "mysql://$user:$pass@$host/$db_name";
u%X0j(g,Kpm+B0PHPChina 开源社区门户}ky)G8k8T6N
// DB::connect will return a Pear DB object on successPHPChina 开源社区门户/K7]M1X\"A$s
// or a Pear DB Error object on errorPHPChina 开源社区门户pf:z_1bO#W.Ry1o
// You can also set to TRUE the second paramPHPChina 开源社区门户Knx4J'e
// if you want a persistent connection:
0~"^Y!}x&sB0// $db = DB::connect($dsn, true);
M1c F]}.C/X+V0
$db DB::connect($dsn);
%Nwp3J9a d ZS0PHPChina 开源社区门户n9_o2q/f#Wt(R
// With DB::isError you can differentiate between an error or
a{\?t1[cW1e0oG0// a valid connection.PHPChina 开源社区门户+SY~9C[,qCH6e
if (DB::isError($db)) {PHPChina 开源社区门户"r&o9v@!R1IN
        die (
$db->getMessage());PHPChina 开源社区门户 of7]1B d!]p
}
4i:r`?2H:~q;LA0....PHPChina 开源社区门户 l$cN4H O b`k
// You can disconnect from the database with:PHPChina 开源社区门户A1vC7Kv0YU;F&K @
$db->disconnect();
0P]'b7{INK*}9K0
?>
 
PHPChina 开源社区门户7~6Z)w%l8uA3{j

数据源(上例中的$dsn参数)有以下允许的格式:(从Pear/DB.phpparseDSN方法复制而来)

yr0B*Z f&pw M0
 
     *  phptype: Database backend used in PHP (mysql, odbc etc.)PHPChina 开源社区门户1R!@W7t\h
     *  dbsyntax: Database used with regards to SQL syntax etc.
:m'Nb,Bn Zn\zm0     *  protocol: Communication protocol to use (tcp, unix etc.)
&qKyC m+kM$LX0     *  hostspec: Host specification (hostname[:port])PHPChina 开源社区门户F\ Xf!LlE
     *  database: Database to use on the DBMS serverPHPChina 开源社区门户 F7nny/mrAjL GA
     *  username: User name for login
9K:Yrac?0     *  password: Password for login
\6R VT'nh O-Wh0     *
"j1XH8T+\F(O0     * The format of the supplied DSN is in its fullest form:PHPChina 开源社区门户*A!|cGW i,b&\
     *
7wxVq7C4v$pp0     *  phptype(dbsyntax)://username:password@protocol+hostspec/database
,M+z:ET @ jN0     *
L?^W p0     * Most variations are allowed:PHPChina 开源社区门户9Jq*jq#Jp ~#i
     *PHPChina 开源社区门户#ncw%?o+q nh
     *  phptype://username:password@protocol+hostspec:110//usr/db_file.dbPHPChina 开源社区门户:oY#AR,BGxMK W
     *  phptype://username:password@hostspec/database_namePHPChina 开源社区门户:[&g_DT(r
     *  phptype://username:password@hostspecPHPChina 开源社区门户;|vE|Z|]
     *  phptype://username@hostspec
,` e{ ?1Iklc:d.|~C0     *  phptype://hostspec/database
}#}0H#p'm)[%P0     *  phptype://hostspecPHPChina 开源社区门户{uZ7~0` AD2k
     *  phptype(dbsyntax)
R iwD Un$mNX0     *  phptype
PHPChina 开源社区门户cb"B?g"AhCH U,\

现在支持的数据库有(phptypeDSN部分):

)z0k NT.o$u#L1ED&os0
 
mysql  -> MySQLPHPChina 开源社区门户)I)C@-]"L1f/V
pgsql  -> PostgreSQL
T1])]:ke$]7Iu;w0ibase  -> InterBasePHPChina 开源社区门户O@ V8Z3I&e e
msql   -> Mini SQL
1DNM?(\)X8A(U0mssql  -> Microsoft SQL Server
{%dgI;E.a0oci8   -> Oracle7/8/8iPHPChina 开源社区门户V;gMCp
odbc   -> ODBC (Open Database Connectivity)PHPChina 开源社区门户%b,m E1bI*H+w;B-@
sybase -> SyBasePHPChina 开源社区门户$wP-E#i'n(w2TX/Ww
ifx    -> InformixPHPChina 开源社区门户{6S#E6^u T2GGP(p
fbsql  -> FrontBase

8H"I q#WbL3d(C(g0注意并不是所有数据库特征都支持,可以从<pear根目录>/DB/STATUS得到详细的清单。PHPChina 开源社区门户g_'_#D/Z

3.2        执行数据库PHPChina 开源社区门户6R v+m-KqC

 
<?phpPHPChina 开源社区门户4?:[@3rrS-xTE;Z
// Once you have a valid DB objectPHPChina 开源社区门户r7FS:]h f!t
...
+wV:SR#K|mG3m0
$sql "select * from clients";
1Y,j Lni~0
// If the query is a "SELECT", $db->query will return
1E*[$|Ii#H`7~PsM0// a DB Result object on success.
,zB'\?muKu0// Else it simply will return a DB_OKPHPChina 开源社区门户C&B5Z{5M;h @9j
// On failure it will return a DB Error object.PHPChina 开源社区门户;d Nji1e.{
$result $db->query($sql);PHPChina 开源社区门户'L\9xZ];xm/vS
// Always check that $result is not an errorPHPChina 开源社区门户l N!d!z D#c y/N9I1LkD
if (DB::isError($result)) {PHPChina 开源社区门户)R3a^)Jc"]S,?+@8[
        die (
$result->getMessage());
4F%I%_7] hsFN&_0}PHPChina 开源社区门户VdI*oi,@@5Z:S
....PHPChina 开源社区门户`(r9@s,[`+ggk
?>
 

 PHPChina 开源社区门户~mil7}BC

3.3        

TAG: 全是帅的不能再输啦

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar