当前位置: 首页 > news >正文

thinkphp 操作远程oracle遇到的相关坑

坑一:没有内置oracle

        解决方法:

                1,下载think-oracle 扩展,资源很多,百度即可下载,分别放置于db下的connector 和 builder 文件夹下

                2,安装oracle本地客户端,一搜一大把,核心注意不要下错版本

坑二:字符集错误导致有中文字符串的语句查询不到

        原因分析:因为远程oracle数据库采用的字符集是ZHS16GBK,我本地的程序是utf8,导致字符串与远程不匹配导致oracle无法查询

        解决方法:涉及到中文字符串的,先做转义,然后再代入查询,如下

public function sup_waite_todu(){$text1 = iconv('utf-8', 'gbk','您有新的订单,请及时处理!【');$text2 = iconv('utf-8', 'gbk','】【采购员:');$text3 = iconv('utf-8', 'gbk','】【数量:');$text4 = iconv('utf-8', 'gbk','】');$effect = $this->db->query("select to_char(post_date,'yyyy-mm-dd hh24:mi:ss')||'".$text1."'||order_id||'".$text2."'||post_person||'".$text3."'|| (select sum(buy_num) from exp_order b where a.order_id = b.order_id and a.hospital_code = b.hospital_code)||'".$text4."' as info from exp_order_master a  where a.sup_id = '1076' and a.hospital_code ='1001' and a.order_status='1' order by post_date desc");return $effect;
}
坑三:一个项目牵扯多个数据库,程序一部分数据来自于远程oracle返回,需要配置多个

        解决方法:

                1,三方业务新建一个模型放于common下的model层,初始化直接连接远程,

                2,application下的config.php 增加数据库配置

                3,注意oracle的端口,需要根据实际情况变更

<?php
namespace app\common\model;use think\Db;
use think\Model;
use think\Config;/*** 供应商模型*/
header('Content-type: text/html; charset=ZHS16GBK');
class Sup extends Model
{protected function initialize(){$this->db = Db::connect(config('db_config1'));}//获取供应商信息public function sup_base_info($sup_id=''){$effect = $this->db->query("select b.hospital_code,c.f_fullname, a.expire_date,b.sup_name,b.sup_addres,b.sup_phone,b.sup_worker, a.f_createdate from xmadmin.xm_base_user a, exp_sup_dict b, xmadmin.xm_base_company c where a.f_encode = b.sup_id and  b.hospital_code = c.f_companyid and a.f_encode='".$sup_id."'");return $effect;}
}
'db_config1' => [// 数据库类型'type'        => 'oracle',// 数据库连接DSN配置'dsn'         => '',// 服务器地址'hostname'    => '',// 数据库名'database'    => '',// 数据库用户名'username'    => '',// 数据库密码'password'    => '',// 数据库连接端口'hostport'    => '',// 数据库连接参数'params'      => [],// 数据库编码默认采用utf8'charset'     => 'ZHS16GBK',// 数据库表前缀'prefix'      => '',
]

http://www.lryc.cn/news/156306.html

相关文章:

  • 流媒体之推流和拉流
  • 浏览器中怎样查看前后端传值
  • 计算机竞赛 基于深度学习的人脸表情识别
  • 虹科分享 | MKA:基于先进车载网络安全解决方案的密钥协议
  • jmeter 常数吞吐量定时器
  • 【大数据Hive】hive 加载数据常用方案使用详解
  • 计及电池储能寿命损耗的微电网经济调度(matlab代码)
  • DP读书:鲲鹏处理器 架构与编程(十四)ACPI与软件架构具体调优
  • 4.正则提取html中的img标签的src内容
  • 安装对应版本pytorch和torchvision
  • 酷克数据与华为合作更进一步 携手推出云数仓联合解决方案
  • 若依 MyBatis改为MyBatis-Plus
  • docker-ubuntu
  • Mock 基本使用
  • MySql学习笔记08——事务介绍
  • AMEYA360:思瑞浦推出汽车级超低静态功耗高压LDO—TPL8031Q
  • 保留 N 条数据功能 实现方案
  • SOME/IP TTL 在各种Entry 中各是什么意思?有什么限制?
  • CSS中如何实现元素的旋转和缩放效果?
  • Unity通过偏移UV播放序列帧动画
  • 无涯教程-Android - List fragments函数
  • 【图解RabbitMQ-3】消息队列RabbitMQ介绍及核心流程
  • jmeter源码二次开发
  • 深入实现 MyBatis 底层机制的任务阶段4 - 开发 Mapper 接口和 Mapper.xml
  • 分享一下在微信上有哪些微信活动可以做
  • 视频监控/视频汇聚/视频云存储EasyCVR平台接入国标GB协议后出现断流情况,该如何解决?
  • 没有软件怎么管理固定资产
  • 几种反序列化漏洞
  • 华为OD机试 - 找出符合要求的字符串子串(Java 2023 B卷 100分)
  • 深度学习环境搭建笔记(二):mmdetection-CPU安装和训练