【问题标题】:Enable Codeigniter Query Builder启用 Codeigniter 查询生成器
【发布时间】:2017-06-06 04:28:09
【问题描述】:

我正在使用 CodeIgniter v3.1.4,我想利用 Query Builder。

据我所知,我需要做的就是将config/database.php 中的$query_builder 设置为TRUE,我已经这样做了。但是,当我尝试使用该类时,出现以下错误:

消息:调用未定义的方法 CI_DB_odbc_driver::where()

我正在使用 Wiredesignz 的 HMVC 实现,它覆盖(除其他外)Loader 类,$query_builder 变量通过该类传输。

让我有点惊讶的是,可以通过全局变量而不是直接通过 db 配置数据来打开/关闭此功能。尽管如此,我尝试打开和关闭它但没有成功。

不确定它是否相关,但我使用的是 ODBC 驱动程序,我的查询如下所示:

$this->db->where('userid', $userid)->set($data);

知道我错过了什么吗?

【问题讨论】:

  • 显示模型的构造方法...
  • 你的 php.ini 中是否开启了 php_pdo_odbc?
  • 是的,当我编写自己的查询时,我可以成功查询我的数据库。失败点在于 Query Builder 类的实现——据我所知,CI_DB 未能扩展 CI_DB_query_builder,因此我的驱动程序最终丢失了许多有用的方法。
  • 模型构造方法 public function __construct() { parent::__construct(); $this->table_name = 'web_appusers'; }

标签: php codeigniter odbc


【解决方案1】:

我今天在尝试过渡到 odbc 时偶然发现了同样的问题。

在 CI 3.1.0 中,他们在其查询构建器上放弃了对 ODBC 的支持(在我看来,这首先破坏了使用 QB 的原因)

原因是他们的实现导致了SQL注入漏洞;但是他们似乎没有修复它的计划;而是完全禁用 odbc 的 QB,锁定你。

来源:https://forum.codeigniter.com/thread-65803.html

“升级说明”:http://www.codeigniter.com/user_guide/installation/upgrade_310.html

Github 问题说明不可能修复:https://github.com/bcit-ci/CodeIgniter/pull/5197

【讨论】:

    【解决方案2】:

    在 application/config/database.php 中检查以下选项:

    $query_builder = TRUE;

    如果你想使用 CI 的查询构建器类,$query_builder 应该是 true

    【讨论】:

    • 感谢您的回答,但我想,线程所有者已经尝试过了,因为他们在问题中提到了它。
    猜你喜欢
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2019-07-25
    相关资源
    最近更新 更多