我一直在敲我的头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
在哪里。第1行='2' - 无效 查询: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');
谁能告诉我它为什么有用?
答案 0 :(得分: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
参数时,该函数会检查两个参数是否在配置中初始化并返回CI实例的config[$index]
;或null
如果其中任何一个未初始化。
如果CI实例中未设置config[$item]
,则该函数始终返回null
。我们假设情况并非如此,因为在避免$index
时,您的呼叫不会崩溃。
因此,当您将$index
作为第二个参数传递时,您的代码会崩溃,因为该函数返回null
,这意味着未设置CI实例的config[$index]
。现在问题是为什么它没有设置,我在这里无法帮助你,但看起来你缺少加载一些模块。
祝你好运