【问题标题】:CodeIgniter Active Record: Debugging without running SQLCodeIgniter Active Record:在不运行 SQL 的情况下进行调试
【发布时间】:2012-07-30 02:53:35
【问题描述】:

我是 Code Igniter 的新手,我正在使用 Active Record 来处理新项目中的所有查询。

有没有办法在不实际运行的情况下输出 SQL 语句。

我创建的函数中有很多语句,选择、删除和更新,我想在测试环境中运行它们之前确保它们是正确的,因为它们周围有很多 If 和 case构建查询。

简而言之,我只是希望它回显语句,而不是运行它。

提前致谢! :)

【问题讨论】:

  • 假设您将查询放入一个变量中,只需:echo $myquery;
  • 所以如果我使用'echo $this->db->last_query();'它会显示查询但不会运行它?
  • 肯定如果 $this->db->updat('table' $data) 已经发送,它会运行吗?
  • 附加说明:启用分析器将极大地帮助您调试每个页面的 MySQL 查询、配置选项、发布、获取和会话数据。可以通过在 Controller 的 __construct 函数中添加 $this->output->enable_profiler(true); 来启用它。

标签: php mysql codeigniter activerecord


【解决方案1】:

查看用户指南的Database Query Helper 部分中列出的insert_string()update_string() 方法。

对于 select,您需要在运行命令后运行 $this->db->last_query(),但 SELECT 是非破坏性的,所以谁在乎呢。

【讨论】:

  • 没错,我很擅长的选择语句,我担心的更新和删除查询,我希望能够在不运行的情况下显示它们。将查看帮助部分。谢谢
  • 插入/更新字符串很容易输出,但它不适用于在活动记录中建立的查询。
  • 当然应该这样做。你是怎么用的?
【解决方案2】:

看看我的这个答案。
How can I rewrite this SQL into CodeIgniter's Active Records?

如果你使用 $this->db->_compile_select() 然后回显它,它将显示查询而不运行。

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2015-01-07
    • 2011-11-09
    • 2016-10-16
    相关资源
    最近更新 更多