2015-05-22 5 views
1

У меня возникла проблема с вводом данных в базу данных оракула (11 г) с помощью codeigniter.codeigniter - вставить данные в базу данных оракулов

первый мой 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")'); 

, но в обоих случаях я получил следующее сообщение об ошибке:

Database error message screenshot

+0

что тип данных BILL_MONTH в базе данных ?? – Saty

+0

'VARCHAR2 (6)' это тип данных для BILL_MONTH – jishan

+0

check http://stackoverflow.com/questions/17053250/codeigniter-activerecords-and-oracle-configuration – Saty

ответ

0

Одна из возможных причин:

RGDN_ID Ваше поле не настроен, чтобы быть автоматически заполнены.

Это эквивалент того, что нужно было бы вставить в таблицу MySQL, у которой нет первичного ключа AUTO_INCREMENT, и вы сами не указали этот идентификатор.

Обратитесь к администратору базы данных, чтобы помочь вам.

Обновление:

У вас есть опечатки в именах полей, которые вы пытаетесь вставить:

  • RDGNFLAG против RDGN_FLAG
  • CORDGN против CRDGN
+0

Поле 'RGDN_ID' установлено как автоматический приращение и для этого используется триггер. @Narf – jishan

+0

Обновлен ответ. – Narf

0

Проблема с двойными кавычками. Скопируйте свою инструкцию и запустите на своем SQL Developer. Вы можете найти недопустимый символ («»)

Для получения дополнительной информации, пожалуйста, смотрите по этой ссылке CodeIgniter - ActiveRecords and Oracle - configuration