【问题标题】:Create SQL file after submit form in PHP Codeigniter在 PHP Codeigniter 中提交表单后创建 SQL 文件
【发布时间】:2013-02-13 06:10:46
【问题描述】:

我有一个数据输入项目,使用 PHP Codeigniter 的在线 Web 应用程序。我的项目有 150 多个问题,用户大约 400 人。

我担心有这么多问题和这么多用户,特别是我只是使用简单的方法将数据插入数据库。我使用表单操作并使用 POST 提交。

我认为,将我之前提交的数据转换为 SQL 文件并上传到服务器会更好。但我不知道这种方法。或者,也许我可以使用其他方法或方式??

需要帮助,对不起我糟糕的英语,非常感谢你。

【问题讨论】:

  • 400 不是“很多用户”,150 也不是“这么多问题”,所以不要担心,当您通过 profiling 正确识别出任何问题后开始处理。另外,您的实际问题是什么,也不是很清楚您的想法是什么......
  • 当然,我已经对用户进行了分析。我只是担心如果多个用户同时提交表单,它会分散数据库或数据一致吗??
  • @beben,取决于您是插入一个表还是多个表。基本上数据库应该保持一致的状态,但是如果您在同一个请求中的多个表上插入/修改数据,请使用事务。
  • @EvaldasDzimanavicius 交易 ??像什么 ??谢谢你...
  • 我将有关交易的信息放在答案中,因为代码无法在 cmets 中很好地格式化。

标签: php mysql sql codeigniter


【解决方案1】:

为了使数据库保持一致的状态,您应该使用事务(如果您在一个请求中插入/更新来自多个表的数据)。

$db->beginTransaction();
try 
{
    // insert data to first table
    // insert data to second table
    ...
    // insert data to last table

    $db->commit();                 
}
catch (Exception $e)
{
    $db->rollBack();
}

这是一个使用 Zend 的示例,但其思想与 CodeIgniter 相同。也许实现(方法名称)不同。

CodeIgniter 示例:

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
$this->db->trans_complete(); 

您可以在此处找到有关使用 CodeIgniter 进行交易的更多信息: http://ellislab.com/codeigniter/user-guide/database/transactions.html

【讨论】:

  • 那么,事务可以保持数据一致吗??如果许多用户同时提交表单也不用担心??而且,当我将数据插入数据库时​​不会引起任何问题??谢谢。
  • 事务将确保,如果您的查询之一失败(由于某种原因)不会执行其他查询,它们将被回滚。换句话说,全有或全无。至于多个用户同时提交相同的表单 - 这应该不是问题。数据库引擎将确保来自多个用户的多个查询不会相互干扰。
  • Evaldas Dzimanavicius 好的...谢谢...我知道重点... :)
猜你喜欢
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 2012-04-19
相关资源
最近更新 更多