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

这篇具有很好参考价值的文章主要介绍了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的端口,需要根据实际情况变更文章来源地址https://www.toymoban.com/news/detail-694507.html

<?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'      => '',
]

到了这里,关于thinkphp 操作远程oracle遇到的相关坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Oracle数据库闪回功能的详解和相关命令

    今日看了Oracle原厂老师讲的数据库闪回技术的公开课,感觉受益匪浅。整理了一下关于数据库闪回功能的一些知识和相关测试,在此做下分享。 Oracle数据库闪回技术是一组独特而丰富的数据恢复解决方案,通过有选择地、有效地消除错误的影响,可以逆转人为错误。 查看数

    2024年02月13日
    浏览(51)
  • 用PL/SQL Developer连接远程Oracle数据库

    oracle数据库安装教程参考 注意: 第六步中的Oracle基目录中的用户名为中文的话,需要去掉中文部分。然后管理口令一定保存好。 2.打开oracle安装目录(默认在C盘,我的在D盘),找到tnsnames.ora文件 这是oracle客户端所需要的一个文件,通过该文件可以配置数据库的连接地址,

    2024年02月13日
    浏览(42)
  • 异地使用PLSQL远程连接访问Oracle数据库【内网穿透】

    转载自cpolar极点云文章:公网远程连接Oracle数据库【内网穿透】 Oracle,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微

    2024年02月12日
    浏览(61)
  • Oracle数据库安装教程,并实现公网远程连接【内网穿透】

    Oracle ,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可以说 Oracle 数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数

    2024年02月09日
    浏览(50)
  • 本地搭建Oracle数据库结合内网穿透实现公网环境远程访问

    最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 Oracle,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可

    2024年02月01日
    浏览(47)
  • 用SQL语句操作Oracle数据库——数据更新

    数据库中的数据更新操作有3种:1)向表中添加若干行数据(增);2)删除表中的若干行数据(删);3)修改表中的数据(改)。对于这3种操作,SQL语言中有3种相应的语句与之对应。接下来让我们逐一详细地了解一下。 本文我们依然使用以下三个表来进行数据更新操作:

    2024年01月19日
    浏览(64)
  • 如何实现无公网ip固定TCP端口地址远程连接Oracle数据库

    Oracle,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据

    2024年01月18日
    浏览(49)
  • C# Dapper 操作Oracle数据库

    nuget安装内容   1.配置连接字符串 OracleConnectionString这个可用  2.读取配置文件类 3.Dapper数据库操作类  4.操作数据实例 

    2024年02月10日
    浏览(47)
  • Linux系统下操作Oracle数据库

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种

    2023年04月08日
    浏览(51)
  • Python优雅地操作Oracle数据库

    方案一: 直接套用脚本,需可以看懂一些脚本逻辑 改代码中 类名为 OracleConnector,它可以同时连接多个 Oracle 数据库,并提供执行增删改查操作的方法。 以下是代码解释: 这个封装类使得可以同时连接多个 Oracle 数据库,并在它们上执行增删改查操作。而在执行非查询操作时

    2024年02月03日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包