php - 在codeigniter中执行多个无法一一执行的查询

标签 php mysql codeigniter

我有一个“事件”表。为简单起见,您可以想象它应该像一个分层类别。它使用嵌套集模型(感谢 Mark Hillyer 在 http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ 的帖子)

我的代码:

$query = 
"LOCK TABLE event WRITE;
SELECT @ParentRight := parent.rgt, @Level := parent.level FROM event AS parent WHERE parent.id = '{$data['parent_id']}';

UPDATE event SET rgt = rgt + 2 WHERE rgt > @ParentRight;
UPDATE event SET lft = lft + 2 WHERE lft > @ParentRight;

INSERT INTO event(lft, rgt, level) VALUES(@ParentRight, @ParentRight + 1, @Level);
UNLOCK TABLES;";

mysqli_multi_query($this->db->conn_id, $query);

$data['id'] = $this->db->insert_id();
return $this->db->update('event', $data);

然后我将使用 $this->db->update('event', $data)

更新最后插入的对象

$data 是用户填写的数组。


问题一:

我无法使用$this->db->query($query);;

执行$query

无效的解决方案 1:

我。使用 mysqli 数据库引擎。

二。 mysqli_multi_query($this->db->conn_id, $query); 虽然我认为它有效,但它给出了以下错误:

命令不同步;你现在不能运行这个命令。


问题2:

$this->db->insert_id() 不起作用(返回 0)

问题三:

$this->db->update('event', $data); 错误: 命令不同步;你现在不能运行这个命令


如何更正此代码以使其正常工作?我什至很乐意为第一个问题找到解决方案。

最佳答案

也许使用交易?

$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(); 

https://www.codeigniter.com/user_guide/database/transactions.html

关于php - 在codeigniter中执行多个无法一一执行的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999959/

相关文章:

php - 无法将空白发布到数据库 : postgreSQL and Codeigniter

php - jsTree异步搜索——触发加载新节点

php - 如何在同一个表中使用 where 子句进行选择,但传递给表的字符串位于同一文本框中但具有不同的 id

mysql - 按组类型加入第一个和最后一个记录?

mysql - 如果当前更新行 0,则更新下一行

javascript - jquery 使用 codeigniter 框架发布数据在 PHP 中不可见

php - mysql - codeigniter 中的重复条目错误

php - 从 .phar 存档中提取文件

php - div 没有做它应该做的事

php - 在 PHP 中导出到 excel 时出错