9

我已经敲了 5 个小时的头,终于解决了这个问题,但我就是在不知道原因的情况下无法入睡。让我先解释一下这个问题。

我使用了 codeigniter HMVC 扩展并将 ion_auth 作为单独的模块安装。

|-modules
|--auth
|---config
|-----ion_auth.php
|---controllers
|-----auth.php
|---models
|-----ion_auth_model.php
|---views

当我试图获取用户组时,我开始遇到连线 SQL 错误。然后我缩小了问题范围,发现文件中的项目config/ion_auth.php没有加载ion_auth_model.php

错误 - 2016-02-24 20:09:26 --> 查询错误:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在 'as id, 附近使用的正确语法。name, . description加入.=。id在哪里 。= '2'' 在第 1 行 - 无效查询: SELECT 。如id, . name, . description加入.=。id 在哪里 。='2'

然后我尝试了一些东西,当我'ion_auth'从几个方法调用中删除索引时,ion_auth_model.php一切都开始工作了。

我变了

$this->tables  = $this->config->item('tables', 'ion_auth');
$this->join            = $this->config->item('join', 'ion_auth);

$this->tables  = $this->config->item('tables');
$this->join            = $this->config->item('join');

谁能告诉我它为什么起作用?

4

1 回答 1

1

这是文件 system\core\Config.php 中 CodeIgniter 函数 config->item() 的内部实现

/**
 * Fetch a config file item
 *
 * @param   string  $item   Config item name
 * @param   string  $index  Index name
 * @return  string|null The configuration item or NULL if the item doesn't exist
 */
public function item($item, $index = '')
{
    if ($index == '')
    {
        return isset($this->config[$item]) ? $this->config[$item] : NULL;
    }

    return isset($this->config[$index], $this->config[$index][$item]) ? $this->config[$index][$item] : NULL;
}

当您传递$index参数时,该函数会检查两个参数是否在配置中初始化并返回config[$index]CI 实例;或者null如果其中任何一个未初始化。

如果config[$item]未在 CI 实例中设置,则该函数始终返回null。让我们假设情况并非如此,因为您的电话在避免时不会崩溃$index

$index因此,当您作为第二个参数传递时,您的代码会因为函数返回null而崩溃,这意味着config[$index]CI 实例的 未设置。现在的问题是为什么它没有设置,我在这里帮不了你,但看起来你缺少加载一些模块。

最好的祝福

于 2016-03-04T17:05:46.000 回答