Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter-$this->db->from未将“from x_table”添加到最终查询,在站点的完整导航过程中多次失败_Php_Codeigniter_Codeigniter 2 - Fatal编程技术网

Php CodeIgniter-$this->db->from未将“from x_table”添加到最终查询,在站点的完整导航过程中多次失败

Php CodeIgniter-$this->db->from未将“from x_table”添加到最终查询,在站点的完整导航过程中多次失败,php,codeigniter,codeigniter-2,Php,Codeigniter,Codeigniter 2,我今天看到一些非常奇怪的行为,我不知道该怎么办。我们已经在我们的网站上使用codeigniter一年多了,今天当我点击我们的一个页面时,我看到一个数据库错误显示给我。我迅速打开该页面的控制器并刷新以再次看到它,但这次没有发生,我无法让它再次触发 嗯,令人担忧 我浏览了其他几页,它在另一页上再次出现,这次我查看了它失败的地方,它在这样一个查询中消失了: SELECT `foo`.`ID_NO` JOIN `bar` ON `bar`.`foo_ID` = `foo`.`ID_NO` WHERE `

我今天看到一些非常奇怪的行为,我不知道该怎么办。我们已经在我们的网站上使用codeigniter一年多了,今天当我点击我们的一个页面时,我看到一个数据库错误显示给我。我迅速打开该页面的控制器并刷新以再次看到它,但这次没有发生,我无法让它再次触发

嗯,令人担忧

我浏览了其他几页,它在另一页上再次出现,这次我查看了它失败的地方,它在这样一个查询中消失了:

SELECT `foo`.`ID_NO` JOIN `bar` ON `bar`.`foo_ID` = `foo`.`ID_NO` WHERE `someSetting` = 0 AND `bar`.`Filter_ID` = '123'
…等一下,应该放在里面的“FROM foo”在哪里

我查看了我的模型控制器,它试图执行以下代码行:

$this->db->select("foo.ID_NO");
$this->db->from('foo');
$this->db->join('bar','bar.foo_ID = foo.ID_NO');
这是一段工作了一年的代码,像这样的错误在任何地方都没有发生过。看起来好像$this->db->来自'foo';根本没有发生

我浏览了网站上的许多其他页面,但又出现了几次,同样的问题是,没有正确构建查询,并抛出了一个数据库错误。刷新时,错误总是消失。我没有在任何页面上看到重复,也没有看到页面通过后又失败

有两件事可能是一个因素:首先,我最近添加了一个错误/异常处理程序,但这不应该对这一点产生影响,特别是就我所知不是一次又一次

其次,当我开始使用错误/处理程序时,我在CodeIgniters中发现了一个已知的错误,并通过将Common.php中的函数is_-loaded$class=更改为function&is_-loaded$class=修复了该错误,因为Loader.php中发生了一个错误:$this->_base_-classes=&is_-loaded;。这一修正似乎被广泛接受,我所经历的错误是不可重复的,而且似乎没有关系,所以我也不认为这是原因

我使用的是CodeIgniter版本2.1.2。以前有人见过这样的东西吗?我无法想象这是什么原因,但我不希望它发生在我今天看到它发生的开发环境之外


编辑:另外,我提到的新错误记录系统没有记录db->from函数中出错的任何内容:

原因是我的错误捕获程序由于引用了一个不存在的索引而被触发:

if($post_array['query'] != ""){
然后错误记录器收集信息并插入数据库。我猜当您以这种方式插入时,它使用相同的$this->db->ar_from字段:

$this->db->insert('error_logging', $data);
然后像在任何成功的查询之后一样清除它

然后代码返回到以前的位置,其ar_-select、ar_-like等字段保持不变,但不是ar_-from,并移动到$this->db->get命令上,该命令失败

在随后的页面加载中,错误已经记录在数据库中,因此没有执行新的插入,查询生成器也没有被篡改,因此没有新的数据库错误


修复方法是简单地获得$this->db的克隆,并使用该克隆执行插入。

进度:在设置db->select、db->from等位置与下面的db->get调用之间的代码中发生错误,因此它将被发送到错误记录器。错误记录器在插入数据库之前查询重复项。我怀疑如果错误是新的,则发生的insert语句会破坏正在生成的查询并导致我的错误。谜团已经确定,现在就要解决它。