用户
 找回密码
 入住 CI 中国社区
搜索
查看: 12061|回复: 18
收起左侧

[核心代码 Core] [1.5.4]为 CodeIgniter 增加 Firebird 数据库驱动

[复制链接]
发表于 2007-12-10 16:36:06 | 显示全部楼层 |阅读模式
测试环境 CodeIgniter 1.5.4

Firebird/Interbase drivers for CodeIgniter
Installation Instructions:
1.  Copy DB_driver.php to BASE_CODEIGNITER_DIRECTORY/system/database/
2.  Create directory BASE_CODEIGNITER_DIRECTORY/system/database/drivers/ibase
3.  Copy ibase*.php to BASE_CODEIGNITER_DIRECTORY/system/database/drivers/ibase/
安装方法:
1.  复制DB_driver.php到BASE_CODEIGNITER_DIRECTORY/system/database/(替换)
2.  建立文件夹 BASE_CODEIGNITER_DIRECTORY/system/database/drivers/ibase
3.  复制ibase*.php到BASE_CODEIGNITER_DIRECTORY/system/database/drivers/ibase/
来源:
http://codeigniter.com/forums/viewthread/53191/
作者:Jeffrey Bradley

修正BUG:︶ㄣ剑雷ゅ jianlei 2007.12.10
说明:感谢effrey Bradley让我们使用CodeIgniter有了Firebird专有的驱动,
由于我喜欢使用Firebird数据库,经过几天的研究,修正了多处Bug,欢迎大家使用.

1. 数据库连接设置方法,例子如下:
PHP复制代码
$active_group = "default";
$db['default']['hostname'] = "localhost";  
$db['default']['username'] = "sysdba";
$db['default']['password'] = "masterkey";
$db['default']['database'] = "ciblog";  //数据库名
$db['default']['dbdriver'] = "ibase";
$db['default']['dbprefix'] = "";
$db['default']['active_r'] = TRUE;
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] =FALSE;
$db['default']['cachedir'] = "";
复制代码
2. 在读取字段值时,一定要使用大写,如:
HTML复制代码
<?php $rs = $blog_array->row() ?>
<h1><?php echo $rs->TOPIC; ?></h1>
<p><?php echo ubb( str_replace('[::end::]' , '' , $rs->BODY) ); ?></p>
<p>Time: <?php echo $rs->BLOGTIME; ?></p>
<p>Comments: <?php echo $rs->COMMENT_TIMES; ?></p>
<p>分类: <?php echo anchor('blog/viewtopic/' . $rs->CATALOG_ID, $rs->CATALOG_NAME); ?></p>
复制代码

3. 使用 BLOB 类型字段,已经可以自动转换了。
4.针对Firebird 2.0做了优化
5.修正了驱动对scaffolding支持的问题
                               2008.01.28

另外我也把论坛上的 BLOG 例子移植到了 Firebird 数据库上,供大家研究。

[ 本帖最后由 jianlei 于 2008-1-28 13:36 编辑 ]

firebird.driver.for.CodeIgniter.rar

13.52 KB, 下载次数: 23

修正了BLOB的bug

cifb.rar

366.75 KB, 下载次数: 17

Demo.BLOB字段

评分

参与人数 1威望 +5 收起 理由
Hex + 5 原创内容

查看全部评分

发表于 2007-12-10 16:54:26 | 显示全部楼层
好东西!我先支持一下!
发表于 2007-12-11 12:49:02 | 显示全部楼层

原创啊,支持啊

借鉴借鉴
 楼主| 发表于 2007-12-11 21:22:24 | 显示全部楼层
看楼顶的附件吧,已经更新

[ 本帖最后由 jianlei 于 2007-12-30 19:47 编辑 ]
发表于 2007-12-11 22:05:09 | 显示全部楼层
是不是需要一个随时编辑帖子的权限呀?
 楼主| 发表于 2007-12-12 08:14:41 | 显示全部楼层
能够有随时编辑的权限,那是最好了,可以减少服务器上的垃圾文件,谢谢?
发表于 2007-12-13 14:14:08 | 显示全部楼层

使用 BLOB 类型字段问题

3. 使用 BLOB 类型字段,目前读取数据时还有问题,请尽量避免。

这个和codeigniter没有关系,和ibase的动态链接库有关系,修正一下就可以了。
发表于 2007-12-13 14:36:22 | 显示全部楼层
原帖由 jianlei 于 2007-12-12 08:14 发表
能够有随时编辑的权限,那是最好了,可以减少服务器上的垃圾文件,谢谢?


怎么设置呀?现在的设置可以编辑呀?奇怪。。。。。。。大家说怎么设置呀?
 楼主| 发表于 2007-12-13 22:29:50 | 显示全部楼层
找到BLOB的问题了,取出BLOB值后还要“解密”,adodb是自动作了处理,处理函数如下:
PHP复制代码
 
        function BlobDecode( $db,$blob )
    {
        $maxblobsize = 262144;
        if  (ADODB_PHPVER >= 0x5000) {
            $blob_data = ibase_blob_info($db, $blob );
            $blobid = ibase_blob_open($db, $blob );
        } else {
 
            $blob_data = ibase_blob_info( $blob );
            $blobid = ibase_blob_open( $blob );
        }
 
        if( $blob_data[0] > $maxblobsize ) {
 
            $realblob = ibase_blob_get($blobid, $maxblobsize);
 
            while($string = ibase_blob_get($blobid, 8192)){
                $realblob .= $string;
            }
        } else {
            $realblob = ibase_blob_get($blobid, $blob_data[0]);
        }
 
        ibase_blob_close( $blobid );
        return( $realblob );
        }
 
复制代码


想在CI中也实现BLOB内容自动转换,目前还没找到办法,有知道方法的,提示一下
发表于 2007-12-14 14:24:48 | 显示全部楼层
adodb 里不是自动转换吗?

本版积分规则