zoukankan      html  css  js  c++  java
  • php连接神通数据库 ci框架

    神通数据库连接手册

    1、扩展安装

    目前连接神通数据库有两种方式

    ODBC PDO_ACI
    具体请看手册,目前使用PDO_ODBC方法PS:请看操作2 目前只有64位有pdo_aci.so文件,需要在神通数据库的安装目录里面找到PDO_ACI目录,并找到对应版本号将文件拷贝到当前php的扩展里面,并修改php.ini文件 PS:请看操作1

    操作1:

    #这里以php7.1测试为主
    
    #神通数据库安装完的目录,并进入到PDO_ACI目录
    cd /opt/ShenTong/PDO_ACI
    
    #拷贝pdo_aci.so到php扩展
    cd php7.1/
    cp ./pdo_aci.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
    ----------------------------------------------------------------------------------
    #修改php.ini 如果这里有了pdo_odbc 请先注释掉
    extension=pdo_odbc.so
    ----------------------------------------------------
    重启php-fpm 看看是否存在pdo_aci
    

    操作2:

    目前我们统一使用的unixodbc组件来连接非windows平台的odbc
    神通数据库自己设置了dns连接比如:
    定义驱动和数据源名称
    
    
    [ODBC Data Sources]
    ST = OSCAR ODBC DRIVER
    
    [ST]
    Driver = /opt/ShenTong/odbc/lib/liboscarodbcw.so
    Servername = xx.xx.xx.xx
    Port = 2003
    Database = OSRDB
    Username = xxx
    Password = 123x456
    SocketBufferSize = 4096
    FetchBufferSize = 100
    
    而在php下面使用的时候用ST找不到驱动,OSCAR ODBC DRIVER会卡死
    所以先写将odbc.ini写入到环境变量
    
    putenv('ODBCSYSINI=/usr/local/etc');
    putenv('ODBCINI=/usr/local/etc/odbc.ini');
    $username = "xxx";
    $password = "123456";
    try {
    $dbh = new PDO("odbc:ST",
    "$username",
    "$password"
    );
    } catch (PDOException $exception) {
    echo $exception->getMessage();
    exit;
    }
    
    $stmt = $dbh->prepare("SELECT * FROM REGISTRY");
    $stmt->execute();
    while ($row = $stmt->fetch()) {
    print_r($row);
    }
    

    2、数据库配置

    CI框架数据库配置如下:

    $db['default'] = array(
    'dsn' => 'aci:dbname=XX.XX.XX.XX:2003/osrdb;',
    'username' => 'CJP',
    'password' => '123456',
    'database' => 'osrdb',
    'dbdriver' => 'pdo',
    'dbprefix' => '',
    'pconnect' => false,
    'db_debug' => true,
    'cache_on' => false,
    'cachedir' => 'cache/mysql',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => false,
    'compress' => false,
    'stricton' => false,
    'failover' => array(),
    'save_queries' => false
    );
    

    以上为数据库配置,配置会运行会报出

    not found driver(好像是这个 忘了)
    

    这是因为ci框架里面的pdo没有以aci的驱动文件。这里需要在system3.1.5里面添加aci的驱动文件

    代码如下:

    vim /system3.1.5/database/drivers/pdo/subdrivers/pdo_aci_driver.php(这个文件不存在,自己添加)
    
    <?php
    
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    
    class CI_DB_pdo_aci_driver extends CI_DB_pdo_driver {
    
    /**
    * Sub-driver
    *
    * @var string
    */
    public $subdriver = 'aci';
    
    // --------------------------------------------------------------------
    
    /**
    * ORDER BY random keyword
    *
    * @var array
    */
    protected $_random_keyword = array('RANDOM()', 'RANDOM()');
    
    // --------------------------------------------------------------------
    
    /**
    * Class constructor
    *
    * Builds the DSN if not already set.
    *
    * @param array $params
    * @return void
    */
    public function __construct($params)
    {
    parent::__construct($params);
    
    }
    
    
    
    }
    

    3、操作方法

    $result=$this->db->get('REGISTRY')->row_array();
    $this->db->insert('REGISTRY',['NAME'=>'test1','VALUES'=>'test1']);
    echo $this->db->last_query();
    
    var_dump($this->db->insert_id());
    
    数据库版本号获取
    $version=$this->db->version();
    //查询表
    $get=$this->db->get('REGISTRY');
    //获取记录数
    $count_all_results=$this->db->count_all_results('REGISTRY');
    //插入数据
    $insert=$this->db->insert('REGISTRY',['NAME'=>'test1','VALUES'=>'test1']);
    //获取插入的记录数
    var_dump($this->db->insert_id());
    
  • 相关阅读:
    MySQL修改root密码的多种方法
    (转)云存储:阿里云OSS 、又拍云和 七牛 的比较
    微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨
    Feed系统架构资料收集
    百万用户时尚分享网站feed系统扩展实践
    (转)浅谈MD5加密算法中的加盐值(SALT)
    json转换成list map集合
    android在假设绘制自己定义的bitmap,然后返回给ImageView
    APPCAN学习笔记003---原生开发与HTML5技术
    【问题解决】syntax error: unexpected end of file或-bash: ./full_build.sh: /bin/bash^M: bad interpreter: No
  • 原文地址:https://www.cnblogs.com/mengluo/p/10917656.html
Copyright © 2011-2022 走看看