4

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

我在模型中有这个功能:

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 ?

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

非常感谢!!

4

1 回答 1

2

您可以使用 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

于 2012-12-09T05:14:48.953 回答