【问题标题】:Get error number with oracle database in Codeigniter在 Codeigniter 中使用 oracle 数据库获取错误号
【发布时间】:2012-11-26 18:41:00
【问题描述】:

首先对不起我的英语不好..

我在模型中有这个功能:

function insertUser($data){

$sql = "INSERT INTO USERS VALUES (?, ?, ?, ?, ?, ?, ?, ?)";

$query = $this->db->query($sql, array(
    $data["uname"],
    $data["nome"],
    $data["dnuser"],
    $data["muser"],
    $data["fruser"],
    $data["cpuser"],
    $data["euser"],
    md5($data["passu"])
  ));

//return $this->db->_error_number();

} 

我有一个主键,当数据正确时,该功能起作用,但插入重复键时,该功能不起作用。但我怎么知道呢?我的意思是我怎样才能捕捉到错误 ORA-00001 ??

顺便说一句,注释行不起作用..

非常感谢!!

【问题讨论】:

  • ->_error_number()需要租用_吗?
  • 是的,该函数在系统文件夹中的 oci_driver.php 中以这种方式定义...
  • 那么 $this->db 是一个什么样的类呢?或者你用的是什么框架?该系统文件夹属于哪个框架/应用程序?

标签: php database oracle codeigniter error-handling


【解决方案1】:

你可以使用 try catch 块...

function insertUser($data){

$sql = "INSERT INTO USERS VALUES (?, ?, ?, ?, ?, ?, ?, ?)";

try{
$this->db->trans_start();
$query = $this->db->query($sql, array(
    $data["uname"],
    $data["nome"],
    $data["dnuser"],
    $data["muser"],
    $data["fruser"],
    $data["cpuser"],
    $data["euser"],
    md5($data["passu"])
  ));
$this->db->trans_commit();
}
catch(Exception $ex){
$this->db->trans_rollback();
echo "Error:".$ex;
}
} 

您可以查看以下文章..

http://ellislab.com/codeigniter/user-guide/database/transactions.html

【讨论】:

  • 您确定已经尝试过这些代码并获得预期的结果吗?对我来说,这些代码没有任何结果。
猜你喜欢
  • 2017-02-12
  • 2012-08-03
  • 2019-11-12
  • 2018-04-15
  • 1970-01-01
  • 2017-01-10
  • 2018-09-18
  • 2017-06-06
  • 1970-01-01
相关资源
最近更新 更多