【问题标题】:codeigniter - insert data into oracle databasecodeigniter - 将数据插入 oracle 数据库
【发布时间】:2015-08-04 10:36:24
【问题描述】:

我在使用 codeigniter 将数据插入到 oracle 数据库 (11g) 时遇到了一些问题。

首先是我的 database.php 文件:

$active_group = 'default';
$active_record = TRUE;


$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'turjo';
$db['default']['password'] = '123';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'oci8';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

然后在我的控制器中..

    $conn = oci_connect('turjo', '123', 'localhost');
    if($conn) {
        echo "connected";
    }
    else {
        echo "not";
    }

这给了我connected

然后我尝试了..

    $query = $this->db->query('SELECT * FROM METERREADING_CIBL');
    $data = $query->result_array();
    print_r($data);

这给了我一个数组Array ( [0] => Array ( [RDGN_ID] => 1 [REB_OFF_CODE] => 01 [BILL_MONTH] => JAN [METER_NO] => 1122 [BOOK_NO] => 1122 [ACC_NO] => 1122 [CRDGN] => 1 [RDGN_FLAG] => 1 [RDGN_REF_NUM] => 1 [REC_STATUS] => 1 ) )

现在我想在表中插入一些数据METERREADING_CIBL

我尝试的是:

    $data['REB_OFF_CODE'] = "01";
    $data['BILL_MONTH'] = "FEB";
    $data['METER_NO'] = "1122";
    $data['BOOK_NO'] = "1122";
    $data['ACC_NO'] = "1122";
    $data['CORDGN'] = 1;
    $data['RDGNFLAG'] = "1";
    $data['RDGN_REF_NUM'] = "1";
    $data['REC_STATUS'] = "1";

    $this->db->insert('METERREADING_CIBL', $data);

还有另一种方式:

$this->db->query('INSERT INTO "METERREADING_CIBL" ("REB_OFF_CODE", "BILL_MONTH", "METER_NO", "BOOK_NO", "ACC_NO", "CORDGN", "RDGNFLAG", "RDGN_REF_NUM", "REC_STATUS") VALUES ("02", "FEB", "1122", "1122", "1122", "1", "1", "1", "1")');

但在这两种情况下我都收到以下错误:

【问题讨论】:

标签: php oracle codeigniter


【解决方案1】:

一个可能的原因:

您的 RGDN_ID 字段未设置为自动填充。

这相当于插入一个主键没有 AUTO_INCREMENT 并且您自己没有提供该 ID 的 MySQL 表。

请您的 DBA 为您提供帮助。

更新:

您尝试插入的字段名称中有拼写错误:

  • RDGNFLAGRDGN_FLAG
  • CORDGNCRDGN

【讨论】:

  • RGDN_ID 字段设置为自动递增,并为此使用触发器。 @Narf
【解决方案2】:

双引号问题。复制您的语句并在您的 SQL Developer 上运行。你会发现一个无效字符(“”)

更多信息请参考此链接 CodeIgniter - ActiveRecords and Oracle - configuration

【讨论】:

    猜你喜欢
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2016-09-18
    • 2017-10-24
    • 2017-06-21
    相关资源
    最近更新 更多