位置: 编程技术 - 正文

ThinkPHP连接Oracle数据库(thinkphp连接数据库优化)

编辑:rootadmin

推荐整理分享ThinkPHP连接Oracle数据库(thinkphp连接数据库优化),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:thinkphp连接池,thinkphp连接数据库,thinkphp连接数据库优化,thinkphp连接达梦数据库,thinkphp连接池,thinkphp连接数据库,thinkphp连接oracle数据库,thinkphp连接oracle数据库,内容如对您有帮助,希望把文章链接给更多的朋友!

一、操作环境搭建

系统:Windows7 旗舰版 位

PHP环境:wampserver2.2e-php5.4.3-httpd2.2.-mysql5.5. 位版下载地址: 位版下载地址: Developer 位下载地址: IDE 7.1.2下载地址: Developer和WAMP的PHP扩展。因为PLSQL Developer没有位版。有的朋友说用位Oracle数据库,装位客户端就行,我不想这样做,如果不喜欢我的操作方式,可以绕道。当然了,如果你不使用PLSQL Developer,而选择使用Oracle 自带的SQL Developer,那么你全安装位或都是你自己的事。PHP连接Oracle数据库需要开启相应的扩展,这个扩展也需要数据库客户端的支持,因为php扩展也需要对应数据库客户端的位数。??峦瓯稀?/p>

二、环境配置

1,操作系统的安装我就不说了,Oracle安装自己解决,NetBeans IDE 7.1.2也自己解决。

2,Wamp的安装我也不说了,不会的直接从DOS开始重新学习吧。

3,WAMP会把PHP的网页文件夹定义在安装wamp的文件夹下的www里面,我是安装在D盘,所以就是D:WAMPwww。我们暂时不做别的自定义修改。启动wamp,系统托盘图标为绿色表示启动OK。

4,打开localhost,看到如下界面,表示环境配置基本OK。为什么是基本了,因为还没有对Oracle的配置进行设置。

5,打开如图的PHP扩展菜单,在绿色图标上,左键->PHP->PHP扩展,点击php-oci8的扩展,这时候这个WAMP会重启,等待重启后变绿,就表示OK。

6,再次打开刚才的localhost页面,如果找到如图4的显示,就表示目前PHP已经支持Oracle了。

注意,我现在用的 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,编写如下内容:

5,在浏览器中打开localhost/项目名/index.php,Thinkphp会帮你生成好相关文件和文件夹。6,对配置文件进行操作,找到:Conf文件夹下config.php文件,修改如下:

Oracle数据库和mysql 的结构不同,一般默认安装的数据库名是orcl,如果你使用了多个数据库监听,那么就要根据具体的监听字段来设置。比如:我本机数据库坚挺是Orcl,同时监听另外一个外网的数据库,监听字符串为Orcl2,那么如果你需要连接这个外网数据库,那么需要写的数据库名就是orcl2。

7,经过以上的配置,是已经可以连接oracle数据库了,但是在thinkphp的实际操作中有什么注意的地方,且听下回分解。

最近收集了一些关于THinkPHP连接Oracle数据库的问题,有很多朋友按照连接mysql的方法来操作,导致有一些方法在Oreale中无法正常使用。比如说:findAll,Select方法无法使用,获取不到需要的数据。Create和add方法无法创建和写入数据到数据库中。

其实根据以前问题我做了几天调试,找到了问题所在,并成功在我自己一个小项目练习中使用正常,那么现在就将我的经验分享给大家。

ThinkPHP连接Oracle数据库(thinkphp连接数据库优化)

1,数据库的连接及配置文件的内容我就不说了, 上面已经做了解释。我这里只根据一个数据表的例子来说明我的操作。

2,表结构如下:

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。控制器我只对添加和查找做例子,因此代码如下:

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

'id', 'username', 'password');

Model解释:这才是重点,这有这样,new出来的$M_User的映射字段数组才不会为空,这样才能和POST的数据进行对应,才会让过滤方法正常识别,不被过滤。

6,经过了以上的操作,针对Oracle的数据库操作就完成了,我现在也可以任意使用ThinkPHP提供的方法来操作数据了,包括分页(limit),find(),findAll等等。

php生成酷炫的四个字符验证码 本文实例为大家分享php生成验证码的实现代码,供大家参考,具体内容如下php$im=imagecreate(,);//生成画布imagecolorallocate($im,0,0,0);//背景色$white=imagecolora

利用php输出不同的心形图案 首先为大家分享php输出心形曲线的代码,代码如下phpfor($t=0;$t;$t++){$y=2*cos($t)-cos(2*$t);//笛卡尔心形曲线函数$x=2*sin($t)-sin(2*$t);$x+=3;$y+=3;$x*=;$y*=;$x=round(

PHP简单获取及判断提交来源的方法 本文实例讲述了PHP简单获取及判断提交来源的方法。分享给大家供大家参考,具体如下:echo$_SERVER['HTTP_REFERER'];这个获取上个页面的url例如获得的是:$ur

标签: thinkphp连接数据库优化

本文链接地址:https://www.jiuchutong.com/biancheng/293649.html 转载请保留说明!

上一篇:PHP序列化/对象注入漏洞分析(php序列化和反序列化函数)

下一篇:php生成酷炫的四个字符验证码(php炫酷代码)

  • 增值税普通发票需要交税吗
  • 企业所得税法允许税前扣除的费用划分为
  • 电子汇票提示付款撤销
  • 软件维护费属于费用还是资产
  • 个人独资企业的优缺点
  • 集团公司及子公司员工安排工作
  • 入库出库模板
  • 产成品或自制半成品核算方法有哪些
  • 研发物资
  • 使用人民币进行石油贸易结算
  • 企业法人股东向个人借款能起诉查封公司财产吗
  • 汇算清缴退税现金流量表
  • 营改增后房地产企业增值税如何核算
  • 海关缴款书抵扣怎么做账
  • 职工教育经费怎么做账
  • 金税盘不交年费可以正常使用吗
  • 专利年费是不是只能一项一项交
  • 未达起征点销售额怎么填申报表
  • 1697510703
  • 局域网内ip地址冲突怎么找出来
  • 任务栏图标调大了怎么办
  • 装电脑系统的方法和步骤
  • 开具给个人的发票哪里查询
  • 追加投资会增加实收资本吗
  • 我老公有外遇了,我很爱他,我该怎么办
  • 企业所得税的纳税人包括哪些
  • 黄金期货交易要怎么样
  • 事业单位包含哪些
  • yii2框架运行原理
  • thinkphp5.0.23
  • 增值税留抵退税怎么操作
  • php获取字符串位置
  • 权限管理实现的功能包括
  • 废品损失科目的账户结构
  • 工会经费的来源包括
  • 非财政补助结转和非财政补助结余的区别
  • 展会门票怎么入账
  • 工会收支账务处理
  • python send_from_directory
  • 印花税核定征收比例取消了吗
  • 年末需暂估已发生的费用吗
  • 所得税申报表收入包含营业外收入吗
  • 什么叫财务台账
  • Windows7下Microsoft SQL Server 2008安装图解和注意事项
  • 国有资产无偿划转需要缴税吗
  • 土地增值税要计入税金及附加吗
  • 企业所得税实施条例第22条
  • 清算所得税计税基础
  • 含有增值税的工作有哪些
  • 代扣代缴增值税怎么做账
  • 长期待摊费用装修费分摊分录
  • 销项发票怎么导出的是压缩包怎么打开
  • 篮球俱乐部归什么部门管理
  • 往年附加税退税怎么做
  • 生鲜配送账务处罚标准
  • 公司房屋租赁协议
  • 会计中的记账是什么意思
  • sql查询从入门到实践
  • mysql远程访问不了
  • xp系统电脑开机密码忘记了
  • xp系统找不到搜索功能
  • centos coreos
  • win8无法安装其它软件
  • win10激活后是什么样子
  • windows与linux的关系
  • 磁贴for kwgt
  • win8设备管理器在哪里打开
  • 解决安装后软件icon一圈白边问题
  • cocos-2dx
  • jquery实战
  • javascript字体属性
  • 教大家使用灭火器
  • android sdk在哪下载
  • 国税局征管科
  • 车价36万保险一般多少钱
  • 杭州残保金2021年新政策申报时间
  • 山东中信银行电话
  • 一般贸易和非一切贸易
  • 税务ukey登录界面
  • 衡阳地税局的地理位置
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设