2012-12-08 44 views
4

首先对不起我的英语不好的Oracle数据库..获取错误编号与笨

我一个模型中有这样的功能:

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?

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

非常感谢!

+0

是租赁'_'在'需要 - > _ ERROR_NUMBER() '? – GolezTrol

+0

是的,这个函数在oci_driver.php中定义的方式在系统文件夹中... –

+0

什么样的类是$ this-> db呢?或者你在使用什么框架?这个系统文件夹属于哪个框架/应用程序? – GolezTrol

回答

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

+0

你确定已经试过这些代码并获得预期结果吗?对我来说这些代码没有任何结果。 – danisupr4