Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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 两个控制器和两个页面之间的数据库事务_Php_Database_Forms_Postgresql_Codeigniter - Fatal编程技术网

Php 两个控制器和两个页面之间的数据库事务

Php 两个控制器和两个页面之间的数据库事务,php,database,forms,postgresql,codeigniter,Php,Database,Forms,Postgresql,Codeigniter,我会尽力解释我的问题,如果你需要其他信息,请在下面评论 我有一个页面名form.php: 此表单函数是提交值 然后通过名为formController.php的控制器捕获formController.php中的值,在控制器内部看起来如下所示: $this->db->trans_start(); --查询插入表_1的值('1','a');db->query($sql) 使用上面的控制器,然后我们转到nextForm而不提交它。在我在名为nextFormController的控制器(另

我会尽力解释我的问题,如果你需要其他信息,请在下面评论

我有一个页面名form.php

此表单函数是提交值

然后通过名为formController.php的控制器捕获formController.php中的值,在控制器内部看起来如下所示:

$this->db->trans_start();
--查询插入表_1的值('1','a');db->query($sql)

使用上面的控制器,然后我们转到nextForm而不提交它。在我在名为nextFormController的控制器(另一个控制器)中提交nextForm.php之后:

$this->db->trans_complete();
摘要:

我尝试在一页一页中启动数据库事务 控制器,我尝试在另一页中完成事务,然后 控制器(不同的控制器)。但我得到的是这个查询的结果 内部formController.php未插入到数据库中

任何人都可以帮助我解释和修复我的代码,而无需移动 是否完成到formController.php的传输?因为我需要完成这个任务 查询后第二页提交正确


谢谢

我对Codeigner不是很坚定,但是我强烈认为您不能在一个请求中启动数据库事务,而在另一个请求中完成它。收集数据以在会话对象内完成事务,如果手头有执行数据库交互的所有数据,则开始这样做。或者交替地转到第二个控制器,不执行新请求。但我也不知道Codeigniter是否支持这一点。正如@hakre所说的,您不能在不同的页面上启动事务并结束它们。一个事务与一个连接相关,在每个页面加载上使用一个新的事务。还要注意的是,控制器不是运行事务的地方,但它们应该在模型中使用?但如果可能的话,如何将$this->db->transaction_start()中的$this传递给View,然后返回控制器?
$this->db->trans_complete();