php aci 框架,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(这个文件不存在,自己添加)

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());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值