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());
    
  • 相关阅读:
    【Intellij】Intellij Idea 2017创建web项目及tomcat部署实战
    【IntelliJ 】IntelliJ IDEA 15 创建maven项目
    【IntelliJ】IntelliJ IDEA的安装破解及使用
    maven坐标查询
    【PowerDesigner】PowerDesigner之CDM、PDM、SQL之间转换
    【c3p0】 C3P0的三种配置方式以及基本配置项详解
    LinkedHashMap和HashMap的比较使用
    【全局变量】mysql查看全局变量以及设置全局变量的值
    Redis总结
    Java高概率面试题目—finally
  • 原文地址:https://www.cnblogs.com/mengluo/p/10917656.html
Copyright © 2011-2022 走看看