PHP网页设计FleaPHP 开辟指南 - 6. 会见数据库
大家如果能懂得“熟能生巧”的道理也就明白了这并不是浪费时间,同时这也可以减轻板主的负担,让他们有时间去处理更难的问题。会见|开辟指南|数据|数据库 这一章咱们就来看看 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.';}?>http://www.pushad.com/XrssFile/2006-12/7/20061272369709.gif 请注重这里咱们没有挪用 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() : 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 表,会发明这个表已拔出了数据。
http://www.pushad.com/XrssFile/2006-12/7/20061272369915.png注重上图中划红圈的 created 字段。固然咱们下面的代码在用 $modelPosts->create() 拔出纪录时并没有供应该字段的值,但该字段的值被主动填充了。
http://www.pushad.com/XrssFile/2006-12/7/20061272369709.gif 当数据表中具着名为 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() 更新后再掏出的纪录内容。
http://www.pushad.com/XrssFile/2006-12/7/200612723611506.png对照两段输入,可以看到第二段输入的 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 的个人履历,以及统计网页流量。 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
页:
[1]