检查 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 显示空白页而不是错误消息

我希望 codeigniter 回显 php 错误而不是 500 内部错误

Codeigniter 3 分页错误:第二页显示记录 3 到 13 而不是 11 到 20

ACL(访问控制列表)Codeigniter 按用户 ID 而不是按角色

如何在 Codeigniter 中检查是不是设置了会话?

Codeigniter-检查用户是不是存在于月份