并用它来连接一个数据库.这个连接采用PConnect方
分类:彩世界开奖app苹果下载-编程

本想学pear的,可是网上看到的几篇帖子对adodb的评价相当高,所以改学了这个。 ADODB的优点有这几个: 1、速度比pear快一倍; 2、支持的数据库类型比pear多很多,甚至可以支持ACCESS; 3、无须安装,无须服务器支持 不知道adodb是什么或是想下载adodb的朋友可以去这个链接看看: 另外,如果哪位兄弟翻译了README的全文或知道哪里有译文请给我回个帖,谢谢。 Tutorial Example1:SelectStatement 任务:连接一个名为Northwind的Access数据库,显示每条记录的前两个字段. 在这个实例里,我们新建了一个ADOC连接对象,并用它来连接一个数据库.这个连接采用PConnect方法,这是一个持久连接.当我们要查询数据库时,我们可以随时调用这个连接的Execute()函数.它会返回一个ADORecordSet对象whichisactuallyacursorthatholdsthecurrentrowinthearrayfields[].我们使用MoveNext()从一个记录转向下一个记录. NB:有一个非常实用的函数SelectLimit在本例中没有用到,它可以控制显示的记录数. PHP:-------------------------------------------------------------------------------- include;#载入ADOdb $conn=&ADONewConnection;#新建一个连接 $conn->PConnect;#连接到一个名为northwind的MS-Access数据库 $recordSet=&$conn->Execute('select*fromproducts');#从products数据表中搜索所有数据 if print$conn->ErrorMsg();//如果数据搜索发生错误显示错误信息 else while{ print$recordSet->fields[0].''.$recordSet->fields[1].'
'; $recordSet->MoveNext();//指向下一个记录 }//列表显示数据

$recordSet->Close;//可选 ?>

$recordSet在$recordSet->fields中返回当前数组,对字段进行数字索引函数移动到下一个记录.当数据库搜索到结尾时EOFproperty被设置为true.如果Execute()发生错误,recordset返回flase. $recordSet->fields[]数组产生于PHP的数据库扩展。有些数据库扩展只能按数字索引而不能按字段名索引.如果坚持要使用字段名索引,则应采用SetFetchMode函数.无论采用哪种格式索引,recordset都可以由Execute创建。 PHP:-------------------------------------------------------------------------------- $db->SetFetchMode; $rs1=$db->Execute;//采用数字索引 $db->SetFetchMode; $rs2=$db->Execute;//采用字段名索引 print_r;#showsarray print_r;#showsarray(['col1']=>'v0',['col2']=>'v1')-------------------------------------------------------------------------------- 如果要获取记录号,你可以使用$recordSet->RecordCount()。如果没有当前记录则返回-1。 实例2:AdvancedSelectwithFieldObjects 搜索表格,显示前两个字段.如果第二个字段是时间或日期格式,则将其改为美国标准时间格式显示. PHP:-------------------------------------------------------------------------------- include;///载入adodb $conn=&ADONewConnection;//新建一个连接 $conn->PConnect;//连接名为northwind的MS-Access数据库 $recordSet=&$conn->Execute('selectCustomerID,OrderDatefromOrders');//从Orders表中搜索CustomerID和OrderDate两个字段 if print$conn->ErrorMsg();//如果数据库搜索错误,显示错误信息 else while{ $fld=$recordSet->FetchField;//把第二个字段赋值给$fld $type=$recordSet->MetaType;//取字段值的格式 if($type=='D'||$type=='T') print$recordSet->fields[0].''. $recordSet->UserDate($recordSet->fields[1],'m/d/Y').'
';//如果字段格式为日期或时间型,使其以美国标准格式输出 else print$recordSet->fields[0].''.$recordSet->fields[1].'
';//否则以原样输出 $recordSet->MoveNext();//指向下一个记录 }

$recordSet->Close;//可选 ?>

在这个例子里,我们用FetchField()函数检查了第二个字段的格式.它返回了一个包含三个变量的对象 name:字段名 type:字段在其数据库中的真实格式 max_length:字段最大长度,部分数据库不会返回这个值,比如MYSQL,这种情况下max_length值等于-1. 我们使用MetaType()把字段的数据库格式转化为标准的字段格式 C:字符型字段,它应该可以在标签下显示. X:文本型字段,存放比较大的文本,一般作用于

标签 B:块,二进制格式的大型对象,如图片 D:日期型字段 T:时间型字段 L:逻辑型字段 I:整型字段 N:数字字段.包括自动编号,数字,浮点数,实数. R:连续字段.包括serial,autoincrementintegers.它只能工作于指定的数据库. 如果metatype是日期或时戳类型的,我们用用户定义的日期格式UserDate用来转换PHPSQL日期字符串格式到用户定义的格式,MetaType()的另一种用法是在插入和替换前确认数据有效性. 实例3:Inserting 在订单数据表中插入一个包含日期和字符型数据的记录,插入之前必须先进行转换,eg:thesingle-quoteinthewordJohn's. PHP:-------------------------------------------------------------------------------- include;//载入adodb $conn=&ADONewConnection;//新建一个连接 $conn->PConnect;//连接到ACCESS数据库northwind $shipto=$conn->qstr; $sql="insertintoorders(customerID,EmployeeID,OrderDate,ShipName)"; $sql.="values('ANATR',2,".$conn->DBDate"; if===false){ print'errorinserting:'.$conn->ErrorMsg().'

'; }//如果插入不成功输出错误信息 ?>

在这个例子中,我们看到ADOdb可以很容易地处理一些高级的数据库操作.unix时间戳转换成正确的Access格式,andtherightescapecharacterisusedforquotingtheJohn'sOldShoppe,whichisJohn''sOldShoppeandnotPHP'sdefaultJohn'sOldShoppewithqstr(). 观察执行语句的错误处理.如果Execute函数会返回最后一个错误提示.Note:php_track_errorsmighthavetobeenabledforerrormessagestobesaved. 实例4:Debugging include;//载入adodb $conn=&ADONewConnection;//新建一个连接 $conn->PConnect;//连接到ACCESS数据库northwind $shipto=$conn->qstr; $sql="insertintoorders(customerID,EmployeeID,OrderDate,ShipName)"; $sql.="values('ANATR',2,".$conn->FormatDate"; $conn->debug=true; if===false)print'errorinserting'; ?> 在上面这个例子里,我们设置了debug=true.它会在执行前显示所有SQL信息,同时,它也会显示所有错误提示.在这个例子里,我们不再需要调用ErrorMsg().要想显示recordset,可以参考rs2html()实例. 也可以参阅CustomErrorHandlers的部分内容。 实例5:MySQLandMenus 连接到MySQL数据库agora,并从SQL声明中产生一个下拉菜单,菜单的选项显示为第一个字段,返回值为第二个字段. PHP:-------------------------------------------------------------------------------- include;#loadcodecommontoADOdb $conn=&ADONewConnection;//eateaconnection $conn->PConnect('localhost','userid','','agora');//SQL数据库,数据库名为agora $sql='selectCustomerName,CustomerIDfromcustomers';//搜索字段name用于显示,id用于返回值 $rs=$conn->Execute;

print$rs->GetMenu('GetCust','MaryRosli');//显示菜单 ?>

在这里我们定义了一个名为GetCust的菜单,其中的'MaryRosli'被选定.SeeGetMenu().我们还有一个把记录值返回到数组的函数:GetArray(),andasanassociativearraywiththekeybeingthefirstcolumn:GetAssoc(). 实例6:Connectingto2DatabasesAtOnce PHP:-------------------------------------------------------------------------------- include;#loadcodecommontoADOdb $conn1=&ADONewConnection;#createamysqlconnection $conn2=&ADONewConnection;#createaoracleconnection $conn1->PConnect($server,$userid,$password,$database); $conn2->PConnect(false,$ora_userid,$ora_pwd,$oraname);

$conn1->Execute; $conn2->Execute; ?>//同时连接两个数据库

7:GeneratingUpdateandInsertSQL ADOdb1.31以上的版本支持两个新函数:GetUpdateSQL.Thisallowyoutoperforma"SELECT*FROMtablequeryWHERE...",makeacopyofthe$rs->fields,modifythefields,andthengeneratetheSQLtoupdateorinsertintothetableautomatically. 我们来看看这两个函数在这个工作表中是如何执行的:(ID,FirstName,LastName,Created). Beforethesefunctionscanbecalled,youneedtoinitializetherecordsetbyperformingaselectonthetable.IdeaandcodebyJonathanYoungerjyounger#unilab.com. PHP:-------------------------------------------------------------------------------- #============================================== #SAMPLEGetUpdateSQLcode #============================================== include; include;//奇怪,这句似乎有没有都一样,哪位朋友知道原因请给个解释 #========================== #Thiscodetestsaninsert $sql="SELECT*FROMADOXYZWHEREid=-1";#查找一个空记录$conn=&ADONewConnection;#createaconnection $conn->debug=1; $conn->PConnect("localhost","admin","","test");#connecttoMySQL,testdb $rs=$conn->Execute;#获取一个空记录 $record=array();#建立一个数组准备插入 #设置插入值$record["firstname"]="Bob"; $record["lastname"]="Smith"; $record["created"]=time(); #Passtheemptyrecordsetandthearraycontainingthedatatoinsert #intotheGetInsertSQLfunction.Thefunctionwillprocessthedataandreturn #afullyformattedinsertsqlstatement.#插入前会格式化变量 $insertSQL=$conn->GetInsertSQL; $conn->Execute;#在数据库中插入数据 #========================== #下面这段程序演示修改数据,大致与上一段程序相同 $sql="SELECT*FROMADOXYZWHEREid=1"; #Selectarecordtoupdate $rs=$conn->Execute;#Executethequeryandgettheexistingrecordtoupdate $record=array();#Initializeanarraytoholdtherecorddatatoupdate #Setthevaluesforthefieldsintherecord $record["firstname"]="Caroline"; $record["lastname"]="Smith";#UpdateCaroline'slastnamefromMirandatoSmith #Passthesinglerecordrecordsetandthearraycontainingthedatatoupdate #intotheGetUpdateSQLfunction.Thefunctionwillprocessthedataandreturn #afullyformattedupdatesqlstatementwiththecorrectWHEREclause. #Ifthedatahasnotchanged,norecordsetisreturned $updateSQL=$conn->GetUpdateSQL; $conn->Execute;#Updatetherecordinthedatabase $conn->Close();

?>

实例8ImplementingScrollingwithNextandPrevious 下面的演示是个很小的分页浏览程序. PHP:-------------------------------------------------------------------------------- include_once; include_once('../adodb-pager.inc.php'); session_start(); $db=NewADOConnection; $db->Connect('localhost','root','','xphplens'); $sql="select*fromadoxyz"; $pager=newADODB_Pager; $pager->Render;-------------------------------------------------------------------------------- 运行上面这段程序的结果如下: |<<<>>>| IDFirstNameLastNameDateCreated 36AlanTuringSat06,Oct2001 37SerenaWilliamsSat06,Oct2001 38YatSunSunSat06,Oct2001 39WaiHunSeeSat06,Oct2001 40StevenOeySat06,Oct2001 Page8/10 调用Render方法可以分页显示数据.如果你没有给Render()输入值,ADODB_Pager默认值为每页10个记录. 你可以在SQL里选择显示任意字段并为其定义名称: $sql='selectidas"ID",firstnameas"FirstName", lastnameas"LastName",createdas"DateCreated"fromadoxyz'; 以上代码你可以在adodb/tests/testpaging.php中找到,ADODB_Pager对象在adodb/adodb-pager.inc.php中.你可以给ADODB_Pager的代码加上图像和改变颜色,你可以通过设置$pager->htmlSpecialChars=false来显示HTML代码. SomeofthecodeusedherewascontributedbyIvánOlivaandCornelG. Example9:ExportinginCSVorTab-DelimitedFormat Weprovidesomehelperfunctionstoexportincomma-separated-valueandtab-delimitedformats: PHP:-------------------------------------------------------------------------------- include_once('/path/to/adodb/toexport.inc.php');include_once('/path/to/adodb/adodb.inc.php'); $db=&NewADOConnection;$db->Connect($server,$userid,$password,$database);$rs=$db->Execute('selectfnameas"FirstName",surnameas"Surname"fromtable'); print"

";printrs2csv;#returnastring,CSVformatprint'';$rs->MoveFirst();#note,somedatabasesdonotsupportMoveFirstprintrs2tab;#returnastring,tab-delimited #false==suppressfieldnamesinfirstlineprint'';$rs->MoveFirst;#sendtostdoutdirectly(thereisalsoanrs2csvoutfunction) print"

"; $rs->MoveFirst();$fp=fopen{rs2csvfile;#writetofile(thereisalsoanrs2tabfilefunction) fclose;}-------------------------------------------------------------------------------- Carriage-returnsornewlinesareconvertedtospaces.Fieldnamesarereturnedinthefirstlineoftext.Stringscontainingthedelimitercharacterarequotedwithdouble-quotes.Double-quotesaredouble-quotedagain.ThisconformstoExcelimportandexportguide-lines. Alltheabovefunctionstakeasanoptionallastparameter,$addtitleswhichdefaultstotrue.Whensettofalsefieldnamesinthefirstlinearesuppressed. Example10:RecordsetFilters Sometimeswewanttopre-processallrowsinarecordsetbeforeweuseit.Forexample,wewanttoucwordsalltextinrecordset. PHP:-------------------------------------------------------------------------------- include_once('adodb/rsfilter.inc.php'); include_once('adodb/adodb.inc.php'); //ucwords()everyelementintherecordset functiondo_ucwords { foreach{ $arr[$k]=ucwords; } } $db=NewADOConnection; $db->PConnect('server','user','pwd','db'); $rs=$db->Execute; $rs=RSFilter;-------------------------------------------------------------------------------- TheRSFilterfunctiontakes2parameters,therecordset,andthenameofthefilterfunction.Itreturnstheprocessedrecordsetscrolledtothefirstrecord.Thefilterfunctiontakestwoparameters,thecurrentrowasanarray,andtherecordsetobject.Forfuturecompatibility,youshouldnotusetheoriginalrecordsetobject.

本文由彩世界开奖发布于彩世界开奖app苹果下载-编程,转载请注明出处:并用它来连接一个数据库.这个连接采用PConnect方

上一篇:二、在微信开发者工具中预览时 下一篇:别的数据库又说pota-to
猜你喜欢
热门排行
精彩图文