CodeIgniter 1.7.0 Oracle10g Oci8 ManTHeB

Terdapat Pada Kategori: Tips, Trik 6 Komentar

Singkat aja.. In my last project, gw coba develop aplikasi pake CodeIgniter versi 1.7.0 *selanjutnya di baca CI* dengan Oracle 10g *selanjutnya di baca 10g*. Tapi entah kenapa CI nggak mo konek sama 10g, udh coba cari ke om google, coba tanya ke rumah codeigniter, sampe ke halaman bug tracker, tetep nggak ketemu… jadi terpaksa deh bongkar sedikit coding si CI.

Telusur punya telusur, ternyata ada beberapa bugs ato mungkin developer CI lupa ato ntah nggak sengaja; yang pasti, biar CI bisa konek ke 10g *ato mungkin versi Oracle lainnya* beberapa baris kode kudu gw ubah. Berikut penerawangannya:

pada file …\system\database\drivers\oci8\oci8_driver.php

//line 49
var $_escape_char = ‘”‘;

ubah menjadi

//line 49
var $_escape_char = ”;

masih di file yang sama

//line 373
function escape_str($str)
{
// Access the CI object
$CI =& get_instance();

return $CI->_remove_invisible_characters($str);
}

ubah menjadi

//line 373
function escape_str($str)
{
// Access the CI object
$CI =& get_instance();

return $CI->input->_remove_invisible_characters($str);
}

sebetulnya cuma segitu yang perlu di ubah, namun guna memaksimalkan query untuk setiap Database Engine, ada baiknya code berikut juga di permak

pada file …\system\database\DB_active_rec.php

//line 1505
if (count($this->ar_like) > 0)
{
if (count($this->ar_where) > 0)
{
$sql .= “\nAND “;
}

$sql .= implode(“\n”, $this->ar_like);
}

ubah menjadi

//line 1505
if (count($this->ar_like) > 0)
{
if (count($this->ar_where) > 0)
{
$sql .= ” AND “;
}

$sql .= “(“.implode(“\n”, $this->ar_like).”)”;
}

slese bongkar kode, selanjutnya konfigurasi koneksi database di …\system\application\config\database.php

$active_group = “default”;
$active_record = TRUE;

$db['default']['hostname'] = “TNSNAMEorSIDorSERVICE”;
$db['default']['username'] = “user_schema”;
$db['default']['password'] = “password_user_schema”;
$db['default']['database'] = “”;
$db['default']['dbdriver'] = “oci8″;
$db['default']['dbprefix'] = “”;
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = “”;
$db['default']['char_set'] = “utf8″;
$db['default']['dbcollat'] = “utf8_general_ci”;

terlihat dalam konfigurasi, tidak ada nama schema ato database yang dipilih, soalnya koneksi akan otomatis mengarah pada schema yang sesuai dengan username. *diamana username sebelumnya sudah di grant pada schema tertentu (yang akan digunakan) melalui Oracle Console/Enterprise*

Segitu aja dari gw, mudah-mudahan membantu.

6 Responses to “CodeIgniter 1.7.0 Oracle10g Oci8 ManTHeB”

  1. nandrito says:

    beuh bener2 ManTHeB… :D

  2. ariawan says:

    te… sekalian benerin fungsi redirect() nya men… :p

  3. Jay Nugraha says:

    Agh… sugan teh naon… nu kieu hungkul…

    teu ngarti aink ah…

  4. Adiputra says:

    @ariawan,
    lha.. emang kenapa dengan redirect() nya men? :-? gak pernah pakek gw :p

    @Jay,
    okeh lah sip heu euh ManTHeB

  5. Eko says:

    gimana klo kaea gini mas..
    saya cuma nyoba2…

    function escape_str($str, $like = FALSE)
    {
    if (is_array($str))
    {
    foreach($str as $key => $val)
    {
    $str[$key] = $this->escape_str($val, $like);
    }

    return $str;
    }

    // Access the CI object
    $CI =& get_instance();

    $str = $CI->input->_remove_invisible_characters($str);

    // escape LIKE condition wildcards
    if ($like === TRUE)
    {
    $str = str_replace( array(‘%’, ‘_’, $this->_like_escape_chr),
    array($this->_like_escape_chr.’%', $this->_like_escape_chr.’_', $this->_like_escape_chr.$this->_like_escape_chr),
    $str);
    }

    return $str;
    }

Leave a Reply