巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

php adodb先容

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-05-01 19:06:16 阅读数: 99

固然 PHP 是建构 Web 体系强无力的东西,可是 PHP 存取数据库的功效,一向未能规范化,每种数据库,都利用别的一种差别且不兼容的利用法式接口(API)。为了弥补这个缺憾,因此才有 ADODB 的呈现。一旦存取数据库的接口予以规范化,就能够或许埋没各类数据库的差别,若欲转换至别的差别的数据库,将变得很是轻易。
  今朝 ADODB最新版本是V4.62,撑持的数据库品种很是地多,比方:MySQL, PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, Sybase, DB2 和普通的 ODBC (此中 PostgreSQL、Informix、Sybase 的driver 是由自在软件社群成长以后进献出来的)。
  利用 ADODB 最大的长处之一是:不论后端数据库若何,存取数据库的体例都是分歧的,开辟设想职员不用为了某一套数据库,而必须再进修别的一套差别的存取体例,这大大加重开辟职员的常识承担,曩昔的常识今后仍可持续利用,转移数据库平台时,法式代码也不用做太大的变动。
  实在 ADODB 如许的成长理念,并不是初创的,DBI 比 ADODB 呈现得更早,它供给 Perl 存取数据库时,利用分歧的 API 呼唤接口。信任用过 Perl + DBI 的伴侣,再来用 ADODB 时,会有一种似曾了解的感受。
  别的,ADODB 对用过 ASP 的人而言,应当不目生,这类伴侣对 ADODB 应当很轻易接管。
  Adodb官方:http://adodb.sourceforge.net/
PHP能够或许用起码的精神和最多的兴趣来成立静态的网站,要成立静态网站咱们须要利用数据库来撷取登入账号信息、宣布静态消息、贮存会商区的文章。 就以利用最通用的 MySQL 数据来讲,你们公司已完成了如斯奇异的任务,让你们的网站比你们所能设想的还要着名。接着你们也发明MySQL没法敷衍现实的任务量了,是该改换数据库 体系的时辰了。
可怜地,在PHP中一切数据库的存取都有些纤细的差别。与MySQL保持你要利用 mysql_connect(),当你决议进级到 Oracle 或 Microsoft SQL Server 时,你必须别离改用 ocilogon() 或 mssql_connect()。更糟的是差别保持所利用的参数也都不一样,有的数据库说 po-tato(土豆的发音),别的数据库又说 pota-to(土豆的别的一个发音),喔…..天啊。
咱们不要抛却
当你须要确保你法式的可移植性的时辰,一个叫做 ADODB 的数据库封包链接库已呈现了。它供给了共通的利用法式接口来跟一切撑持的数据库不异,因此你不必抛却!
ADODB是Active Data Object DataBase的缩写(很抱歉!玩计较机的偶然辰不是很有首创性)。ADODB今朝撑持MySQL、PostgreSQL、Oracle、 Interbase、Microsoft SQL Server、Access、FoxPro、Sybase、ODBC及ADO,你能够或许从 http://php.weblogs.com/adodb下载 ADODB。
MySQL的例子
PHP中最通用的数据库是MySQL,以是我想你会喜好下面的法式代码,它保持到 localhost 的 MySQL 办事器,数据库称号是 mydab,并且履行一个 SQL 的 select 指令查问,查问成果会一列列地印出来。
$db = mysql_connect("localhost", "root", "password");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
if ($result === false) die("failed");
while ($fields = mysql_fetch_row($result)) {
for ($i=0, $max=sizeof($fields); $i < $max; $i++) {
print $fields[$i]." ";
}
print "<br>n";
}
上列的法式代码用色彩标出分段,第一段是保持的局部,第二段是履行SQL指令,最初一段则是显现字段,while轮回扫描成果的每列,而for轮回扫描到每列的字段。
接上去因此ADODB的法式代码获得一样的成果:
include("adodb.inc.php");
$db = NewADOConnection("mysql");
$db->Connect("localhost", "root", "password", "mydb");
$result = $db->Execute("SELECT * FROM employees");
if ($result === false) die("failed");
while (!$result->EOF) {
for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)
print $result->fields[$i]." ";
$result->MoveNext();
print "<br>n";
}
此刻改成指向Oracle数据库,法式代码只需点窜第二行成为 NewADOConnection("oracle"),让咱们看一下完全的法式代码...
与数据库保持
include("adodb.inc.php");
$db = NewADOConnection("mysql");
$db->Connect("localhost", "root", "password", "mydb");
保持的法式代码比来源来MySQL的法式代码有纯熟一些,由于咱们恰是须要更纯熟些。在ADODB咱们利用东西导向的体例来办理多样数据库的庞杂 性,咱们用差别类(class)来节制差别数据库。假定你不熟习东西导向法式设想,别担忧!一切的庞杂工作都埋没在 NewADOConnection() 函数以后。
为了节流内存,咱们只加载与你所保持数据库相干的PHP法式代码,咱们经由过程挪用NewADOConnection(databasedriver) 来完成这件事,正当的数据库驱动法式包罗 mysql,mssql,oracle,oci8,postgres,sybase,vfp,access,ibase 和很多别的的驱动法式。
接着咱们经由过程挪用 NewADOConnection() 来从保持种别发生一个新的东西实体,最初咱们利用 $db->Connect() 来保持数据库。
履行SQL指令
$result = $db->Execute("SELECT * FROM employees");
if ($result === false) die("failed");
间接传递SQL指令到办事器,当做功履行以后,Execute()将传回一个recordset东西,你能够或许犹以下面所列来查抄$result。
一个初学者轻易混合的议题是,在ADODB有两品种型的东西,保持东西和recordset东西,咱们甚么时候用这些东西呢?
保持东西($db)是担任保持数据库,格局化你的SQL查问。而recordset东西($result)则是担任撷取成果并将呼应数据规格化成笔墨或数组。
独一我须要增添的工作是,ADODB供给很多有用的函数来让INSERT及UPDATE指令更轻易些,这点咱们在进阶的章节会提到。
撷取材料
while (!$result->EOF) {
for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)
print $result->fields[$i]." ";
$result->MoveNext();
print "<br>n";
}
后面获得数据的典范很像从档案读数据,在每行咱们起首查抄是不是到了档案的开头(EOF),若还没到开头,轮回扫过每列中的字段,而后移到下一行(MoveNext)接侧重复一样的工作。
$result->fields[]数组是由PHP数据库延长体系所发生的,有些数据库延长体系并不会以字段称号成立该数组的索引,要逼迫以称号排序索引该数组,利用$ADODB_FETCH_MODE的通用变量。
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
$rs1 = $db->Execute("select * from table");
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$rs2 = $db->Execute("select * from table");
print_r($rs1->fields); // shows array([0]=>"v0",[1] =>"v1")
print_r($rs2->fields); // shows array(["col1"]=>"v0",["col2"] =>"v1")
犹如你所见的下面例子,两个recordset贮存并利用差别的取用形式,当recordset由Execute()发生后再设定$ADODB_FETCH_MODE。
ADOConnection
保持到数据库的东西,履行SQL指令并且有一组东西函数来规范格局化SQL指令,比方接洽关系与日期格局等指令。
别的有用的函数
$recordset->Move($pos)卷动今朝的数据列,ADODB撑持全部数据库往前卷动,有一些数据库并不撑持今后的卷动,这倒不会是个题目,由于你能够或许用暂存记载到快取来仿真今后卷动。
$recordset->RecordCount()传回SQL指令存取到的记载笔数,有些数据库会由于不撑持而传回-1。
$recordset->GetArray()以数组的体例传回成果。
rs2html($recordset)函数将传进的recordset转为HTML的表格格局。下例中以粗体字显现相干用法:
include("adodb.inc.php");
include("tohtml.inc.php"); /* includes the rs2html function */
$conn = &ADONewConnection("mysql");
$conn->PConnect("localhost","userid","password","database");
$rs = $conn->Execute("select * from table");
rs2html($rs); /* recordset to html table */
另有很多别的有用的函数列示在文件当中,可从以下网址查得 http://php.weblogs.com/adodb_manual
进阶题材
新增及更新
假定你要新增以下数据到数据库中。
ID = 3
TheDate=mktime(0,0,0,8,31,2001) /* 31st August 2001 */
Note= sugar why don"t we call it off
当你改用别的数据库,能够就没体例新增数据。
第一个题目是,每个数据库各自有差别的内定日期格局,MySQL利用 YYYY-MM-DD 格局,而别的数据库则有差别的内定格局,ADODB供给DBDate()函数来转换差别数据库之间的日期内定格局。
次一个题目是单引号(don"t)的表现法,在MySQL能够或许间接利用单引号(don"t),但在别的数据库如Sybase、Access、 Microsoft SQL Server,则用两个单引号表现(don""t),qstr()函数能够或许处置此题目。
咱们若何利用这些函数?就像如许:
$sql = "INSERT INTO table (id, thedate,note) values ("
. $ID . ","
. $db->DBDate($TheDate) .","
. $db->qstr($Note).")";
$db->Execute($sql);
ADODB另有$connection->Affected_Rows()函数,传回受最初update或delete指令影响的数据列数, 及$recordset->Insert_ID()函数,传回最初因insert指令而主动发生的数据列编号,事后提示大师,不任何数据库有供给 这两个函数。
MetaTypes
你能够或许获得对字段的更多信息,透过recordset的体例FetchField($fieldoffset)传回东西的3个属性:name,type,max_length。
举例申明:
$recordset = $conn->Execute("select adate from table");
$f0 = $recordset->FetchField(0);
成果$f0->name的内容是"adata",$f0->type将是"date",假定max_length不晓得,其内容将会是-1。
处置差别数据库的一个题目是,每个数据库对不异的数据型态会有差别的称号,比方timestamp型态在某数据库中称为datetime,而另 一个数据库则称为time,以是ADODB供给MetaType($type,$max_length)函数来规范化以下的数据型态:
C: character and varchar types
X: text or long character (eg. more than 255 bytes wide).
B: blob or binary image
D: date
T: timestamp
L: logical (boolean)
I: integer
N: numeric (float, double, money)
在后面的例子中,
$recordset = $conn->Execute("select adate from table");
$f0 = $recordset->FetchField(0);
$type = $recordset->MetaType($f0->type, $f0->max_length);
print $type; /* should print "D" */
Select指令的Limit及Top撑持
ADODB有个$connection->SelectLimit($sql,$nrows,$offset)函数让你撷取 recordset的局部调集,这是接纳Microsoft产物中的SELECT TOP用法,及PostgreSQL与MySQL中的SELECT...LIMIT用法的长处,即便本来的数据库并不供给此用法,本函数也仿真供给该使 用体例。
快取增援
ADODB许可你在你的档案体系中暂存recordset的数据,并且在$connection->CacheExecute($ secs2cache,$sql)及 $connection->CacheSelectLimit($secs2cache,$sql,$nrows,$offset)等设定的时候间 隔达到以后,才真正去做数据库的查问以节流时候。
PHP4 Session撑持
ADODB也撑持PHP4 session handler,你能够或许寄存你的session变量在数据库中,相干功效请参考 http://php.weblogs.com/adodb-sessions
鼓动勉励贸易利用
假定你打算写商用的PHP利用软件来发卖,你也能够或许利用ADODB,咱们根据GPL来出书ADODB,也便是说你能够或许正当地在商用利用软件中援用,并保有你法式代码的一切权。激烈地鼓动勉励ADODB的贸易利用,咱们本身外部也正以这个来由如斯利用中。
TAG标签: php   adodb先容  
一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

27
04月
PHP函数import_request_va

本文实例阐发了PHP函数import_request_variables()用法。分享给大师供大师参考,详细以下:import_reques... >>概况

01
05月
PHP典范的给图片加水印法式

<?php /************************************************************... >>概况

04
01月
互联网给糊口带来了甚么 - 行业资讯_巅云建

012017/06 互联网给糊口带来了甚么 互联网潮水遮天蔽日囊括而来,不论你是情愿或不情愿,它都已成为不得不... >>概况

10
04月
这9个体例,帮你搭建加倍高效的视觉条理 -

视觉条理是塑造优异数字产物的根本,它能让内容以加倍有用的体例被构造到一路,使其更轻易被懂得。视觉条理对用户休会的影响很大,信息的构造架构是... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站