|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大家如果能懂得“熟能生巧”的道理也就明白了这并不是浪费时间,同时这也可以减轻板主的负担,让他们有时间去处理更难的问题。会见|开辟指南|数据|数据库 这一章咱们就来看看 FleaPHP 的数据库会见功效。体验一下 FleaPHP 精彩的主动化 CRUD 才能。
毗连数据库
在 htdocs 目次中创立子目次 testDB,并在子目次下创立文件 test1.php 文件,内容以下:- <?phprequire('../FLEA/FLEA.php');__FLEA_PREPARE();// 筹办数据库毗连信息$dsn = array( 'driver' => 'mysql', 'host' => 'localhost', 'login' => 'root', 'password' => '', 'database' => 'test',);// 获得数据库会见对象$dbo =& get_dbo($dsn);// 毗连到数据库if ($dbo->connect()) { echo 'Connect to database successed.';}?>
复制代码 请注重这里咱们没有挪用 run() 函数。因而咱们需求挪用 __FLEA_PREPARE() 函数来初始化 FleaPHP 运转情况。而且 __FLEA_PREPARE() 函数应当在用 register_app_inf() 或 set_app_inf() 修正使用法式设置后挪用。
如今启动 APM Express,经由过程阅读器履行 http://localhost/testDB/test1.php,假如一切正常,应当看到 Connect to database successed 信息。
假如呈现以下的毛病信息,申明 MySQL 数据库的 root 用户暗码不准确。请修正下面代码中的 password 信息。- Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost'
复制代码 创立纪录
接上去,咱们用 phpMyAdmin 在 test 数据库中履行上面的 SQL 语句。这会创立在 test 数据库中创立一个名为 posts 的表。- CREATE TABLE `posts` ( `post_id` int(11) NOT NULL auto_increment, `title` varchar(255) NOT NULL, `body` text NOT NULL, `created` int(11) default NULL, `updated` int(11) default NULL, PRIMARY KEY (`post_id`)) DEFAULT CHARSET=gb2312;
复制代码 如今咱们修正 test1.php 的内容为以下内容:- <?phprequire('../FLEA/FLEA.php');// 筹办数据库毗连信息$dsn = array( 'driver' => 'mysql', 'host' => 'localhost', 'login' => 'root', 'password' => '', 'database' => 'test',);// 指定命据库毗连设置,TableDataGateway 会主动掏出 dbDSN 设置来毗连数据库set_app_inf('dbDSN', $dsn);// 初始化 FleaPHP 运转情况__FLEA_PREPARE();// 因为 FLEA_Db_TableDataGateway 并非主动载入的,因而需求明白载入load_class('FLEA_Db_TableDataGateway');// 从 FLEA_Db_TableDataGateway 派生 Posts 类class Posts extends FLEA_Db_TableDataGateway{ // 指定命据表称号 var $tableName = 'posts'; // 指定主键字段名 var $primaryKey = 'post_id';}// 机关 Posts 实例$modelPosts =& new Posts();// 创立一条新纪录,并前往新纪录的主键值$newPostId = $modelPosts->create(array( 'title' => 'First post', 'body' => 'First post body',));echo $newPostId;?>
复制代码 在阅读重视新运转 test1.php,会看到输入了局 1。假如多刷新几回,可以看到这个数字不休增加。如今转到 phpMyAdmin,阅读 posts 表,会发明这个表已拔出了数据。
注重上图中划红圈的 created 字段。固然咱们下面的代码在用 $modelPosts->create() 拔出纪录时并没有供应该字段的值,但该字段的值被主动填充了。
当数据表中具着名为 created、created_at 或 created_on 的字段,而且字段类型为整数或日期,则在向这个数据表拔出纪录时。FleaPHP 会主动用以后工夫填充该字段。一样的,updated、updated_at 或 updated_on 字段会在更新纪录时用以后工夫填充。
关于 FLEA_Db_TableDataGateway
FLEA_Db_TableDataGateway 是一个供应主动化 CRUD 操作的类。开辟者必需从该类派生本人的类。每个 FLEA_Db_TableDataGateway 派生类对应一个数据表。例如下面代码中的 Posts 类就对应数据表 posts。FLEA_Db_TableDataGateway 派生类在 FleaPHP 使用法式中称为表数据进口。
每个表数据进口都需求界说一个必需的成员变量:
- $tableName 指定该表数据进口对应的数据表
假如数据表有多个主键字段,那末还要用 $primaryKey 指定要利用的主键字段。当没有效 $primaryKey 指准时,FLEA_Db_TableDataGateway 会主动依据数据表界说来肯定主键字段名。
完成下面的界说后,一个表数据进口类就筹办好了。只需实例化这个类,就可以对该类对应的数据表停止各类操作了。
读取和更新纪录
如今咱们持续修正后面的代码,增添以下内容:- /** * .... 接续下面的代码片断 */echo "<hr />\n";// 读取方才创立的新纪录$post = $modelPosts->find($newPostId);// 输入纪录内容dump($post);// 修正纪录内容$post['title'] = 'New title';// 保留修正后的纪录到数据库$modelPosts->update($post);// 从头查询被修正后的纪录$updatedPost = $modelPosts->find($newPostId);// 输入修正后的纪录内容dump($updatedPost);
复制代码 如今经由过程阅读器履行 test1.php,就能够看到两个稍有分歧的输入。
第一段输入是用 $modelPosts->find() 掏出的纪录内容。而第二段数据是用 $modelPosts->update() 更新后再掏出的纪录内容。
对照两段输入,可以看到第二段输入的 title 字段和 updated 字段都被修正了。
删除纪录
删除纪录有两种次要的体例,一是用表数据进口的 remove() 办法,以一笔记录做参数。另外一种办法是用 removeByPkv() 办法,以纪录的主键值做参数。- // 掏出一切 title 字段值为 'First post' 的纪录$posts = $modelPosts->findAll(array('title' => 'First post'));// 删除这些纪录foreach ($posts as $post) { $modelPosts->remove($post); // 或利用 // $modelPosts->removeByPkv($post[$modelPosts->primaryKey]);}
复制代码 这个章节外面,咱们粗略的看了一下 FleaPHP 供应的表数据进口供应的根基操作。在后续章节外面,咱们会看到表数据进口的其他壮大功效。
工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。 |
|