从多个查询中获取行ID而不使用事务

时间:2015-12-14 11:24:39

标签: php mysql sql database

我正在创建社交网站,并且И有用户帖子将被提取的墙。当用户创建新帖子时,他们可以选择附加照片。 发布和附件具有不同的数据库表和不同的控制器和模型。

问题是,当我执行查询以插入新的帖子时,需要再次查询附件女巫将持有post_id。所以首先我需要在数据库中插入帖子,然后И需要为该帖子插入附件?但是如何在一段时间内执行所有查询时获取该帖子的id?

让我们看看我的表:

发表

post_id  account_id  post_text       
-------  ----------  -----------------------
1          1         Hello world post

附件

attachment_id  post_id  attachment_type  attachment_name  
-------------  -------  ---------------  -----------------
1              1          3               photo_1.jpg
2              1          2               video_1.mp4
3              1          3               photo_2.jpg

我不想为此使用交易。

提交时我需要插入:

INSERT INTO post bla bla bla
INSERT INTO attachments bla bla bla <post_id> //how to get it when is executed in some time?

2 个答案:

答案 0 :(得分:2)

如果您正在使用codeigniter,必须有一些选项来获取插入的id我以这种方式使用......

$this->db->insert('posts', $post_data);
$insert_id = $this->db->insert_id();

答案 1 :(得分:0)

您必须从post表格中获取最后一个插入的ID,然后将insert添加到attachments表中,其参考ID为

INSERT INTO post (<FIELDS>) VALUES (<VALUES)

$pdo->insert('posts', $yourData);
$lastInsertId = $pdo->lastInsertId();

然后你必须插入attachments

INSERT INTO attachments (<FIELDS>) VALUES (<VALUES)