仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 895|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页设计FleaPHP 开辟指南 - 6. 会见数据库

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:11:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大家如果能懂得“熟能生巧”的道理也就明白了这并不是浪费时间,同时这也可以减轻板主的负担,让他们有时间去处理更难的问题。会见|开辟指南|数据|数据库   这一章咱们就来看看 FleaPHP 的数据库会见功效。体验一下 FleaPHP 精彩的主动化 CRUD 才能。

毗连数据库

在 htdocs 目次中创立子目次 testDB,并在子目次下创立文件 test1.php 文件,内容以下:
  1. <?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 信息。
  1. Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost'
复制代码
创立纪录

接上去,咱们用 phpMyAdmin 在 test 数据库中履行上面的 SQL 语句。这会创立在 test 数据库中创立一个名为 posts 的表。
  1. 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 的内容为以下内容:
  1. <?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 会主动依据数据表界说来肯定主键字段名。
完成下面的界说后,一个表数据进口类就筹办好了。只需实例化这个类,就可以对该类对应的数据表停止各类操作了。

读取和更新纪录

如今咱们持续修正后面的代码,增添以下内容:
  1. /** * .... 接续下面的代码片断 */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() 办法,以纪录的主键值做参数。
  1. // 掏出一切 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 的个人履历,以及统计网页流量。
小魔女 该用户已被删除
沙发
发表于 2015-2-4 09:54:48 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
蒙在股里 该用户已被删除
板凳
发表于 2015-2-5 13:39:01 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
admin 该用户已被删除
地板
发表于 2015-2-6 02:25:01 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
深爱那片海 该用户已被删除
5#
发表于 2015-2-15 01:06:55 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
柔情似水 该用户已被删除
6#
发表于 2015-3-4 10:48:08 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
海妖 该用户已被删除
7#
发表于 2015-3-11 18:23:48 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
山那边是海 该用户已被删除
8#
发表于 2015-3-19 06:44:47 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
因胸联盟 该用户已被删除
9#
发表于 2015-3-20 15:23:20 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
透明 该用户已被删除
10#
 楼主| 发表于 2015-4-4 07:30:35 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
简单生活 该用户已被删除
11#
发表于 2015-4-6 04:46:28 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
小妖女 该用户已被删除
12#
发表于 2015-4-9 08:51:28 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
再见西城 该用户已被删除
13#
发表于 2015-4-10 09:29:01 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
分手快乐 该用户已被删除
14#
发表于 2015-4-13 03:08:58 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
老尸 该用户已被删除
15#
发表于 2015-4-13 21:30:14 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
活着的死人 该用户已被删除
16#
发表于 2015-4-18 15:31:22 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
飘飘悠悠 该用户已被删除
17#
发表于 2015-4-29 06:26:34 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
只想知道 该用户已被删除
18#
发表于 2015-5-9 17:25:00 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
兰色精灵 该用户已被删除
19#
发表于 2015-6-20 05:02:52 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
莫相离 该用户已被删除
20#
发表于 2015-6-30 06:28:38 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 14:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表