[英]CodeIgniter - Multiple table insert using transactions
我目前正在学习关于在 PHP/MySQL 中创建论坛的教程......并且我正在尝试将它实施到我的 CodeIgniter 项目中。
我遇到了一个我以前从未处理过的障碍,事务......我已经阅读了有关 codeigniters 事务的文档,但考虑到我需要转换的代码,我并没有真正理解它。
我想知道是否有人可以将下面的代码转换为我的 codeigniters 事务代码,我自己尝试过但它使用多个表,我只是完全困惑。
任何帮助都会很棒,代码如下:
$query = "BEGIN WORK;";
$result = mysql_query($query)
if(!$result) {
echo 'An error has occured';
} else {
$sql = "INSERT INTO topics(t_subeject,date,cat) VALUES ($_POST['subject'],NOW(),$_POST['cat'])";
$result = mysql_query($sql);
if(!$result) {
echo 'An error has occured';
$sql = "ROLLBACK;";
$result = mysql_query($query)
} else {
$topid = mysql_insery_id();
$sql = "INSERT INTO posts(content, date) VALUES ($_POST['content'],NOW())";
$result = mysql_query($sql);
if(!$result) {
echo 'An error has occured';
$sql = "ROLLBACK;";
$result = mysql_query($sql);
} else {
$sql = "COMMIT;";
$result = mysql_query($sql);
echo 'Insert successful!';
}
}
}
如果 INSERT 失败,它将自动执行 ROLLBACK。 这就是您首先使用事务的原因。 无需明确检查它。 所以最后,这应该就是它的全部内容:
$this->db->trans_start();
$this->db->query("INSERT INTO topics(t_subeject,date,cat) VALUES ($_POST['subject'],NOW(),$_POST['cat'])");
$topid=$this->db->insert_id();
$this->db->query("INSERT INTO posts(content, date) VALUES ($_POST['content'],NOW())");
$this->db->trans_complete();
...从您的模型类中。 因此,如果第一个 INSERT 已经失败,则不会执行第二个。
http://ellislab.com/codeigniter/user_guide/database/transactions.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.