关键词1
关键词101
关键词201
关键词301
关键词401
关键词501
关键词601
关键词701
关键词801
关键词901
关键词1001
关键词1101
关键词1201
关键词1301
关键词1401
关键词1501
关键词1601
关键词1701
关键词1801
关键词1901
问答1
问答101
问答201
问答301
问答401
问答501
问答601
问答701
问答801
问答901
问答1001
问答1101
问答1201
问答1301
问答1401
问答1501
问答1601
问答1701
问答1801
问答1901
懂视1
懂视101
懂视201
懂视301
懂视401
懂视501
懂视601
懂视701
懂视801
懂视901
懂视1001
懂视1101
懂视1201
懂视1301
懂视1401
懂视1501
懂视1601
懂视1701
懂视1801
懂视1901
文库1
文库101
文库201
文库301
文库401
文库501
文库601
文库701
文库801
文库901
文库1001
文库1101
文库1201
文库1301
文库1401
文库1501
文库1601
文库1701
文库1801
文库1901
分类文章1
分类文章101
分类文章201
分类文章301
分类文章401
分类文章501
分类文章601
分类文章701
分类文章801
分类文章901
分类文章1001
分类文章1101
分类文章1201
分类文章1301
分类文章1401
分类文章1501
分类文章1601
分类文章1701
分类文章1801
分类文章1901
个人技术集锦
全部栏目
返回首页
操作系统
后端开发
数据库
前端开发
移动端开发
首页
操作系统
后端开发
数据库
前端开发
移动端开发
您的当前位置:
首页
正文
指南从MySQL转向ADODB的方法(1)_MySQL
2020-11-09
来源:个人技术集锦
高级材料
Insert 和 Update
假设现在你要把下面的数据插入到数据库中.
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()的函数,它能将日期转
换成正确的格式。
接下来的一个问题是Note字段值里的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)所选择的每个
字段(我同时使用字段和列这两个词)的信息。它将返回一个有三个属性(名称,类
型和最大长度)的对象。
例如:$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 和 varchar 类型
X: text 或者 long character (例如.多于255 字节宽度).
B: blob 或者 binary 图像
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; /* 应该显示 'D' */
Select Limit 和 Top 支持
ADODB 有一个叫$connection->SelectLimit($sql,$nrows,$offset)的函数,它允许你
获得一个记录集(recordset)的子集。它会在Microsoft产品上使用本地的SELECT TOP,
在PostgreSQL和MySQL上使用SELECT ... LIMIT,并在不支持这项功能的数据库上模拟
这个功能。
缓存支持
ADODB 允许你在你的文件系统上缓存记录集结果,只需用$connection->CacheExecute($secs2cache,$sql)
和$connection->CacheSelectLimit($secs2cache,$sql,$nrows,$offset)在指定的超时
时间段后重新向数据库服务器发出查询。
PHP4 Session 处理接口支持
ADODB 也支持PHP4 session 处理接口. 你可以使用ADODB在一个数据库中存储你的
session变量。要获得更多下信息,访问http://php.weblogs.com/adodb-sessions
鼓励作为商业用途
如果你正计划编写你要转售的商业PHP软件产品,你应该考虑ADODB。ADODB使用GPL发
布。这意味这你也可以在商业软件中合法的使用它,同时保持你的代码所有权。十分
鼓励ADODB作为商业用途!因为上述的原因我们内部也正在使用它。
结束语
作为你能耐心的看完这篇文章的答谢,下面是let's call the whole thing off 的
显示全文