【问题标题】:codeigniter insert oracle error Filename: C:\xampp\htdocs\system\database\DB_driver.php Line Number: 330codeigniter 插入 oracle 错误文件名:C:\xampp\htdocs\system\database\DB_driver.php 行号:330
【发布时间】:2014-06-19 04:24:04
【问题描述】:

所以当我尝试插入 oracle 数据库时出现此错误。我认为我已经正确配置了所有内容,并且我做的事情正确,但不知道问题出在哪里,因为我没有收到数字错误。

错误:

Error Number:
INSERT INTO "articulo" ("id", "titulo", "descripcion", "cuerpo") VALUES (1, 'titulo', 'descripcion', 'CUERPO')
Filename: C:\xampp\htdocs\system\database\DB_driver.php
Line Number: 330

控制器类:

class Articulos extends CI_Controller {
function index(){
    //cargo el helper de url, con funciones para trabajo con URL del sitio
    $this->load->helper('url');
    $this->load->database();  
    //cargo el modelo de artículos
    $this->load->model('Articulo_model');

    //pido los ultimos artículos al modelo
    $this->Articulo_model->introducir_articulos();
}}

模型类中的函数:

function introducir_articulos(){
    $data = array(
            'id'=>1,
           'descripcion'=>"descripcion",
           'cuerpo'=>"CUERPO",
           'titulo'=>"titulo"
        );

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

}

由于这只是插入,它没有视图。无论如何,这是我的 conf 文件。

数据库.php

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'ci';
$db['default']['password'] = 'ci';
$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';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

我最近读到,有些地方说,当它基于 oracle 时,将数据库名称放在配置中是没有用的。

欢迎任何帮助。

ps:对不起我的英语。

编辑: 现在我知道为什么,但不知道如何解决它,似乎直接得到了这个查询:

INSERT INTO "articulo" ("id", "titulo", "descripcion", "cuerpo") VALUES (1, 'titulo', 'descripcion', 'CUERPO')

这是一个引用问题,它不应该在插入时加上引号,所以应该是这样的。

 INSERT INTO articulo (id, titulo, descripcion, cuerpo) VALUES (1, 'titulo', 'descripcion', 'CUERPO')

有什么建议吗?

重新编辑:

好的,这真的很疯狂,不是报价问题,当你从 PHP(或至少从代码点火器)编写查询时,oracle 似乎区分大小写我只是把它们放在大写锁定中(就像它们在 oracle 中一样) ,并工作。所以这是最终模型的功能:

function introducir_articulos(){
    $data = array(
            'ID'=>5,
            'TITULO'=>"titulo",
           'DESCRIPCION'=>"descripcion",
           'CUERPO'=>"CUERPO"

        );


    $this->db->insert("ARTICULO", $data); 

}

无法回答我自己的问题,所以我在这里回答了。

【问题讨论】:

  • 首先检查您的连接是否正常?尝试对此进行选择或任何查询
  • 我尝试从表中选择 *,并获取行数,它返回 2(所以很好),我应该猜它连接正确吗?我是 phpOO 和 codeigniter 的新手,但对 php 或 MVC 框架不熟悉。
  • 试试 $this->db->query("your query");
  • 终于由我回答了,我是stackoverflow的新手,所以直到今天我都无法回答我自己的问题。所以我在问题帖子中做了(正如stackoverflow建议的那样)我做对了吗?

标签: php oracle codeigniter insert


【解决方案1】:

在您的配置“DATABASE.php”中,您应该完成此语句

$db['default']['database'] = '';

【讨论】:

  • 我最近读到,有些地方,当它基于oracle时,在配置中放置一个数据库名称是没有用的。这就是我说 dat 的原因,相信我,我试图把 XE(它回答我的 select * from v$database;
【解决方案2】:

好吧,这真是太疯狂了,当你从 PHP 编写查询时,oracle 似乎是区分大小写的。(或至少从代码点火器)只需将它们放在大写锁定中,然后工作。3 小时研究。所以这是最终模型的功能:

function introducir_articulos(){
    $data = array(
            'ID'=>5,
            'TITULO'=>"titulo",
           'DESCRIPCION'=>"descripcion",
           'CUERPO'=>"CUERPO"

        );


    $this->db->insert("ARTICULO", $data); 

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多