浏览:5476 公布日期:2012/05/15 分类:本事专项论题

一、 操作碰着搭建

系统:Windows7 旗舰版 64位
PHP环境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24 32位版
ThinkPHP:3.0正式版
Oracle:Orcale_11gR2 32位版
数据库操作工具:PLSQL Developer 三贰10个人
开荒工具:NetBeans IDE 7.1.2

表明:这里笔者反复重申软件的“位”,是因为这一个很重视,一般情状下,我们系统是六拾一个人的,那么最佳软件也用陆十一人的,不过这里除过系统外,全体选拔叁11个人是有案由的,目标是为了协作PLSQL
Developer和WAMP的PHP扩大。因为PLSQL
Developer未有陆13位版。有的朋友说用陆10位Oracle数据库,装31个人客户端就行,小编不想那样做,假如恶感本身的操作格局,能够绕道。当然了,固然你不使用PLSQL
Developer,而挑选使用Oracle 自带的SQL
Developer,那么您全安装六13位或32都以你和煦的事。PHP连接Oracle数据库须求展开对应的增加,那一个扩大也须求数据库客户端的支持,因为php增添也亟需相应数据库客户端的位数。啰嗦达成。

二、 境况陈设

1, 操作系统的设置作者就不说了,Oracle安装自身化解,NetBeans IDE
7.1.2也融洽消除。

2, Wamp的安装笔者也不说了,不会的第一手从DOS起初重新学习吧。

3,
WAMP会把PHP的网页文件夹定义在设置wamp的文本夹下的www里面,作者是设置在D盘,所以就是D:\WAMP\www。大家有的时候不做别的自定义修改。运行wamp,系统欧洲木莓Logo为暗灰代表运营OK。
蒲京娱乐场 1

4,
张开localhost,看到如下分界面,表示意况陈设基本OK。为啥是宗旨了,因为还并未对Oracle的布局进行设置。
蒲京娱乐场 2

5,
张开如图的PHP扩张菜单,在浅蓝Logo上,左键->PHP->PHP扩充,点击php-oci8的强大,那时候那个WAMP会重启,等待重启后变绿,就表示OK。
蒲京娱乐场 3

6,
再次张开刚才的localhost页面,要是找到如图4的呈现,就象征近些日子PHP已经支撑Oracle了。
蒲京娱乐场 4

专注,笔者将来用的
wamp和oracle客户端都以叁九位,假若内部叁个是陆十个人,那么这么些oci的扩展时打不开的,同一时间活动境遇监测页面也从没oci8的显得。在不选择PL/SQL的前提下,必须是叁十二人Oracle和叁拾几个人WAMP搭配,六拾个人Oracle和六十五个人WAMP搭配,else请绕道。

三、 ThinkPHP配置

1, 把下载好的3.0正式版解压,项目中只必要ThinkPHP文件夹,那是着力。
2,
使用IDE新建三个项目,项目标文书夹为刚刚的Wamp下的www文件夹,假如个人要求自定义其余文本夹,供给修改Apache的布局文件,这里自个儿不修改。
3,
将Thinkphp文件夹拷贝到项目文件夹中,新建贰个php文件,命名index.php。
4, IDE中早就有那个文件的显得了,展开index.php,编写如下内容:
. 代码如下:

  1. <?php
  2. define(‘APP_DEBUG’, true);
  3.  require ‘./ThinkPHP/ThinkPHP.php’;

复制代码

5,
在浏览器中开采localhost/项目名/index.php,Thinkphp会帮您生成好不非亲非故系文书和文件夹。
6, 对配置文件举办操作,找到:Conf文件夹下config.php文件,修改如下:
. 代码如下:

  1. <?php
  2.  return array(
  3.  ‘DB_TYPE’ => ‘Oracle’, // 数据库类型
  4.  ‘DB_HOST’ => ‘192.168.0.8’, // 服务器地址
  5.  ‘DB_NAME’ => ‘orcl’, // 数据库名
  6.  ‘DB_USER’ => ‘test’, // 用户名
  7.  ‘DB_PWD’ => ‘test’, // 密码
  8.  ‘DB_PORT’ => ‘1521’, // 端口
  9.  );

复制代码

Oracle数据库和mysql
的构造不一,一般默许安装的数据库名是orcl,假诺你选择了多个数据库监听,那么就要依据实际的监听字段来设置。举例:笔者本机数据库坚挺是Orcl,相同的时候监听其余三个外网的数据库,监听字符串为Orcl2,那么只要您供给连接这一个外网数据库,那么须要写的数据库名便是orcl2。

7,
经过上述的布署,是已经能够连接oracle数据库了,可是在thinkphp的实操中有啥注意的地点,且接着往下看。

前不久征集了一部分有关THinkPHP连接Oracle数据库的标题,有无数相爱的人遵照连接mysql的法子来操作,导致有部分措施在Oreale中无法符合规律使用。比如说:findAll,Select方法不可能运用,获取不到需求的多寡。Create和add方法不可能创设和写入数据到数据库中。

实则依据在此在此以前难点我做了几天调节和测试,找到了难点所在,并成功在自己自身多少个小品种演习中采纳正规,那么以后就将自个儿的阅历分享给我们。

1,数据库的连年及布局文件的剧情笔者就背着了,
上面已经做了讲解。作者这里只依照二个数据表的事例来声明自个儿的操作。

2,表结构如下:
蒲京娱乐场 5

3,这么些表中有3个字段,ID主键,用户名username和密码password,因为oracle数据库把表名和字段都以转成大写的,同时不援救ID主键自增,笔者只有利用其它的艺术来落实那么些效果,比如:ID自动种类+触发器完毕ID自增。

4, ThinkPHP中,Action是调节器,Model是模型,视图是以模板格局呈现的。

第一,说调节器,小编只做扩充和获取列表的措施介绍。

说不上,说模型,这里才是成功的严重性缘由。为啥?ThinkPHP是有字段映射的,这几个在对MYSQL的支持极度健全,基本不用写MODEL,但是对ORALCE就非常了,当使用M->add()来添增加少时,字段会被$this->_facade()方法过滤掉。那样生成的SQL语句正是不得已执行的,肯定是漏洞百出的,导致数据加多不到数据库中,那么使用select()方法也是一律被过滤。

双重,当自个儿单步调节和测试时,断点被过滤的时候,过滤方法运用到了new出来的MODEL,这么些MODEL会有七个字段映射的数组在里头,那些过滤方法正是和那些字段数组进行对照,假使差异样就过滤掉,结果本人调节和测试发掘,new出来的MODEL根本未曾把字段映射加进去,数组直接为空,当然就无助和丰硕的数量字段一一对应了。那正是荒唐的第一。

上面就来讲消除方法,其实很简短,依照基本的MVC结构,不管是PHP仍旧JAVA依旧.NET都有如此的组织,那么依据严峻的正统,MODEL层的代码是必须写的,就是要和数据库的字段做映射。不过众多用mysql的,就一贯未有去写MODEL里面的代码。这种习于旧贯被用到了oracle中,就出了难点。

5, 下边针对小编下边包车型客车多寡表写出自个儿的代码:

自家的Action是那般的:UserAction.class.php。调节器俺只对增加和搜索做例子,因而代码如下:
. 代码如下:

  1. public function index() {
  2. header(“Content-Type:text/html; charset=utf-8”);
  3. $M_User = new UserModel();
  4. $User_List = $M_User->select();
  5. $this->assign(‘Title’, ‘用户管理’);
  6. $this->assign(‘UserList’, $User_List);
  7. $this->display();
  8.  }
  9.  //增多用户提交管理
  10.  public function Create_Post() {
  11. $M_User = new UserModel();
  12. $data[‘username’] = $this->_post(‘username’);
  13. $data[‘password’] = md5($this->_post(‘pwd’));
  14.  if ($M_User->create()) {
  15. $Query_Result = $M_User->add($data);
  16.  if (false !== $Query_Result) {
  17. $this->success(‘用户加多成功’);
  18.  } else {
  19. $this->error(‘用户增多错误’);
  20.  }
  21.  } else {
  22. header(“Content-Type:text/html; charset=utf-8”);
  23.  exit($M_User->getError() . ‘ [ <a  >返 回</a> ]’);
  24.  }
  25.  }

复制代码

Action解释:

$M_User=new UserModel();

本条主意最棒那样写,因为做.NET的案由,一向都那样写的。针对实际的模子进行实例化,严刻规定本身将要对User表进行操作了。

得到POST数据的代码就非常少解释了。

$M_User->create();

这是ThinkPHP的多个格局,很好,能够帮您过滤掉违法的事物,提出接纳。

$Query_Result = $M_User->add($data);

这一段正是数量的丰裕,作者习于旧贯钦命要丰裕的多寡,也是因为这一段供给基于$M_User实例化,并过滤字段。当然了,大家只要做好MODEL的代码,就不会有标题。上边包车型地铁代码就不解释。官方文书档案都有。

自身的Model是那般的:UserModel.class.php

protected $fields = array( ‘id’, ‘username’, ‘password’ );

Model解释:那才是重中之重,那有诸如此类,new出来的$M_User的投射字段数组才不会为空,那样才具和POST的数目开始展览对应,才会让过滤方法平时识别,不被过滤。

6,经过了以上的操作,针对Oracle的数据库操作就完了了,笔者明天也能够任意使用ThinkPHP提供的主意来操作数据了,包涵分页(limit),find(),findAll等等。


发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图