检查 codeigniter 查询错误,而不是向用户显示它们
Posted
技术标签:
【中文标题】检查 codeigniter 查询错误,而不是向用户显示它们【英文标题】:Check codeigniter query errors instead of showing them to the user 【发布时间】:2011-09-29 19:37:25 【问题描述】:如何检查查询是否出错而不是向用户显示错误(包含不安全的数据库信息)。
假设我有这样的情况,我的分页类需要一个 URI 段来显示页面
example.com/page/uri_segment
。如果有人这样写example.com/page/bla_bla_bla
,我会收到一个错误,显示有关我的数据库的信息。
我该如何处理?
【问题讨论】:
【参考方案1】:在application/config/database.php中设置
// suppress error output to the screen
$db['default']['db_debug'] = FALSE;
在您的模型或控制器中:
// try the select.
$dbRet = $this->db->select($table, $dataArray);
// select has had some problem.
if( !$dbRet )
$errNo = $this->db->_error_number();
$errMess = $this->db->_error_message();
// Do something with the error message or just show_404();
【讨论】:
@clami219 但我应该向用户显示数据库错误消息还是应该为用户自定义消息?最佳做法是什么? @MuhammadTarique 我猜你写错了用户...我没有写答案,我只是编辑它(添加分号)。我猜你的意思是向答案的作者发表讲话...... @MuhammadTarique 通常最好的做法是记录错误,然后向用户显示单独的自定义消息。【参考方案2】:你可以试试这个
$this->db->error();
,这将为您提供数组格式的错误代码和错误消息。
【讨论】:
是的,使用$errors_array['code'];
和$errors_array['message']
【参考方案3】:
你可以这样检查:
function myFunction()
echo 'Oeps';
$res = mysql_query($sql);
if($res && mysql_num_rows($res)>0)
echo 'Success';
else
myFunction();
【讨论】:
以上是关于检查 codeigniter 查询错误,而不是向用户显示它们的主要内容,如果未能解决你的问题,请参考以下文章
我希望 codeigniter 回显 php 错误而不是 500 内部错误
Codeigniter 3 分页错误:第二页显示记录 3 到 13 而不是 11 到 20