Php 存储过程insert语句具有重复主键或未成功时显示错误消息
我正在使用一个在表中插入数据的存储过程。 现在,如果我插入的数据具有表中已经存在的主键值,那么它应该会提供一个错误,但当前它会将我带到这个页面Php 存储过程insert语句具有重复主键或未成功时显示错误消息,php,mysql,codeigniter,stored-procedures,error-handling,Php,Mysql,Codeigniter,Stored Procedures,Error Handling,我正在使用一个在表中插入数据的存储过程。 现在,如果我插入的数据具有表中已经存在的主键值,那么它应该会提供一个错误,但当前它会将我带到这个页面 A Database Error Occurred Error Number: 0 call spInsertabc('primary_key_value_which_already_exists','edd') Filename: models/abc_model.php Line Number: 46 如果存在类似的主键值或插入数据时出错
A Database Error Occurred
Error Number: 0
call spInsertabc('primary_key_value_which_already_exists','edd')
Filename: models/abc_model.php
Line Number: 46
如果存在类似的主键值或插入数据时出错,我希望向用户返回一条正确的消息(例如“现在无法插入重试”或“主键已存在”),以及用户提交daa的页面
我怎样才能做到这一点
我正在使用codeigniter 2.1.0您试图在已经有主键的表上使用ALTER TABLE命令的ADD PRIMARY KEY子句
首先删除现有的主键。为什么不在插入主键之前先搜索它们,以确定是否可以拨打该电话?我认为最好是在开发捕捉错误的工具时,看看是否可以采取行动。srini请求的我的模型函数:公共函数insert_abc($Id,$Name){$query=$this->db->query(“call spInsertabc”(“.this->db->escape($Id)”,“$this->db->escape($Name”);返回$this->db->受影响的行($query)}Hi Patroklo:我需要了解这一点,因为我将有更复杂的插入存储过程,这将是很麻烦的,服务器将搜索主键first@Patroklo:首先查找密钥需要到数据库进行两次往返,并且需要dbms进行更多处理。无论如何,应用程序代码必须优雅地处理其他错误,因此以同样的方式处理PK错误是有意义的。没有得到以下语句“您已尝试使用ALTER TABLE命令的ADD PRIMARY KEY子句”是我调用ALTER TABLE命令的PRIMARY KEY子句的insert查询,请解释,感谢您展示您的php行号:“$this->db->escape($Id)”;“$this->db->escape($Id)”;“$this->db->escape($Id)”;”;返回$this->db->受影响的行($query);}。我的行号:46是$query=$this->db->query(“call spinsertab($Id”);返回$this->db->受影响的行($query).$this->db->escape($Id)。”,“$this->db->escape($Name)。”;