一、操作环境搭建系统:Windows7旗舰版64位PHP环境:wamp server 2.2e-PHP 5 . 4 . 3-httpd 2 . 2 . 22-MySQL 5 . 5 . 24 32位版本下载地址:http://www.wampserver.com/en/. ThinkPHP:3.0正式版下载地址:http://thinkphp.cn/down.htmlOracle: orcale _ 11gr 2 32位版本下载地址:http://www.oracle.com/technetwork/cn/indexes/downloads/. Index.html数据库操作工具:PLSQL Developer 32位下载地址:http://www.allroundautomations.com/plsqldev.html开发工具:NetBeans IDE 7.1.2下载地址:http://netbeans.org/downloads/. Index.html下载单个即可讲解一般我们的系统是64位的,所以最好用64位的软件。但是除了系统之外,选择所有32位软件都是有原因的,目的是为了配合PLSQL Developer和WAMP的PHP扩展。没有64位版本的PLSQL Developer。有朋友说,用64位的Oracle数据库,安装32位的客户端就够了。我不想这么做。如果不喜欢我的操作模式,可以绕道走。当然,如果不使用PLSQL Developer,选择Oracle自带的SQL Developer,安装64位还是32位是你自己的事。要将php连接到Oracle数据库,需要打开相应的扩展,这也需要数据库客户端的支持,因为PHP扩展也需要数据库客户端对应的位数。废话结束。二、环境配置1、操作系统的安装我就不说了,Oracle安装自己解决,NetBeans IDE 7.1.2自己解决。2.我也不会说Wamp的安装,但我不会说。我将直接从DOS重新开始学习。3.wamp将在www中安装WAMP的文件夹下定义PHP的网页文件夹。我安装在D驱动器上,所以是D:WAMPwww。我们暂时不会进行任何其他定制修改。启动wamp,系统托盘图标为绿色,表示启动正常。
4.打开localhost,看到如下界面,表示环境配置基本OK。为什么是基本的,因为甲骨文的配置还没有设置。
5.打开如图所示的PHP扩展菜单。在绿色图标上,左键单击-PHP-PHP扩展,然后单击php-oci8扩展。这时,WAMP将重新启动。重启后变绿,表示OK。
6.再次打开localhost页面。如果如图4所示,这意味着PHP已经支持Oracle了。
请注意,我现在使用的wamp和oracle客户端都是32位的。如果其中一个是64位,则无法打开oci的扩展名,并且oci8不会显示在自动环境监测页面上。没有PL/SQL,必须是32位Oracle和32位WAMP,64位Oracle和64位WAMP。请绕过其他地方。三、ThinkPHP配置1。解压下载的官方版本3.0。项目中只需要ThinkPHP文件夹,这是核心。2.用IDE创建一个新项目。项目的文件夹是刚才Wamp下的www文件夹。如果需要自定义其他文件夹,需要修改apache配置文件。我不会在这里修改它。3.将Thinkphp文件夹复制到项目文件夹,创建一个新的php文件,并将其命名为index.php。4.这些文件已经显示在集成开发环境中。打开index.php写下以下内容:复制代码如下:php define('APP_DEBUG ',true);要求。/ThinkPhp/ThinkPhp . Php ';5.在浏览器中打开localhost/项目名/index.php。Thinkphp将帮助你生成相关的文件和文件夹。6.运行配置文件后,在:conf文件夹中找到config.php文件,修改如下:复制代码如下:Php返回数组(' db _ type'=' Oracle ',//数据库类型' DB_HOST'='192.168.0.8 ',//服务器地址' DB_NAME'='orcl ',//数据库名称' db _ user'=' test ',/。Oracle数据库在结构上不同于mysql。通常,默认的数据库名称是orcl。如果使用多个数据库进行监控,则应根据特定的监控字段进行设置。比如我的本地数据库是Orcl,同时监听另一个外部数据库,监听字符串是Orcl2。如果您需要连接到这个外部数据库,您需要写的数据库名称是orcl2。7.经过以上配置,已经可以连接oracle数据库了,但是thinkphp在实际操作中有一些注意点,再往下看。最近收集了一些关于THinkPHP连接Oracle数据库的问题,很多朋友都沿用了连接mysql的方法,导致一些方法在Oreale中无法正常使用。比如findAll,无法使用Select方法,无法获取所需数据。创建和添加方法无法创建数据并将数据写入数据库。其实根据之前的问题,我已经做了好几天的调试,发现了问题,并在自己的小项目实践中成功正常使用,所以现在就和大家分享一下我的经验。1.我不会谈论数据库的连接和配置文件的内容,如上所述。我将只根据一个数据表的例子来说明我的操作。2.表结构如下:。
3.该表有三个字段,身份证主键,用户名和密码。由于oracle数据库将表名和字段转换为大写,并且不支持ID主键的自增,所以我不得不使用其他方法来实现这个功能,比如ID自动序列触发器就实现了ID的自增。4.在ThinkPHP中,Action是控制器,Model是模型,视图以模板的形式体现。首先来说说控制器。我只介绍添加和获取列表的方法。其次,说到模特,这是成功的主要原因。为什么呢?ThinkPHP有字段映射,非常适合MYSQL。它基本上不需要写MODEL,但是对ORALCE不起作用。当使用M-add()添加数据时,字段将被$this-_facade()方法过滤掉。这样生成的SQL语句无法执行,而且肯定是错误的,所以数据无法添加到数据库中,所以select()方法也被过滤掉了。第三,当我进行单步调试时,当过滤断点时,过滤方法使用了来自new的MODEL,其中有一个字段映射数组。这个过滤方法是将它与这个字段数组进行比较,如果不一致就过滤掉。结果我发现new来的MODEL根本没有添加字段映射,数组直接是空的,当然也不可能一一对应添加的数据字段。这是错误的关键。下面的解决方法其实很简单。按照基本的MVC结构,不管是PHP、JAVA还是。NET,那么按照严格的标准,必须编写MODEL层的代码,也就是必须与数据库的字段进行映射。但是许多使用mysql的人并不直接在MODEL中编写代码。当这个习惯被用在神谕中时,它就出了问题。5.为上面的数据表写我的代码:我的行动是这样的:UserAction.class.php。我只举添加和搜索控制器的例子,所以代码如下:复制的代码如下:公共函数index(){ header(' content-type : text/html;charset=utf-8 ');$M_User=新用户模型();$ User _ List=$ M _ User-select();$this-assign('Title ','用户管理');$this-assign('UserList ',$ User _ List);$ this-display();}//添加用户提交处理公共函数create _ post(){ $ m _ user=new user model();$ data[' username ']=$ this-_ post(' username ');$ data[' password ']=MD5($ this-_ post(' pwd '));if($ M _ User-create()){ $ Query _ Result=$ M _ User-add($ data);如果(假的!==$Query_Result) {$this-success('用户添加成功');} else {$this-error('用户添加的错误');} } else { header(' Content-type : text/html;charset=utf-8 ');Exit ($ m _ user-geterror()。[a href=' JavaScript 3360 history . back()'返回/a]');}}动作说明:$ M _ User=new User model();这个方法最好这样写,因为总是因为做的原因这样写。NET。实例化具体模型,严格规定我来操作User表。对于获取开机自检数据的代码没有太多解释。$ M _ User-create();这是ThinkPHP的一个方法,非常好,可以帮你过滤掉非法的东西。建议使用。$ Query _ Result=$ M _ User-add($ data);这一段是数据的补充。我习惯于指定要添加的数据,也是因为这一段需要根据$M_User进行实例化并过滤字段。当然,只要我们做好MODEL的代码,就不会有问题。下面的代码没有解释。官方文件里有。我的模型是这样的:usermodel.class.php保护的$ field=array(' id ',' username ',' password ');车型说明:这是重点。这样来自new的$M_User的映射字段数组就不会为空,这样就可以对应POST的数据,过滤方式可以正常识别,不被过滤。6.完成上述操作后,Oracle的数据库操作就完成了。现在我可以随意使用ThinkPHP提供的方法来操作数据,包括分页(limit)、find()、findAll等等。来源:http://www.cnblogs.com/aceliu/