如何在一个表中插入相同的LAST_INSERT_ID()以创建多个记录;

问题描述:

我正在编程一个网站,使用ASP.NET,C#以及使用MYSQL。 我需要能够用相同的child_id记录两行;如何在一个表中插入相同的LAST_INSERT_ID()以创建多个记录;

我的问题是与这一个声明,它插入一行,并跳过最后一个。

//data.ChldrenRecord.Service contain two records 
    // babysit, and tutor 
    foreach (string s in data.ChildrenRecord.Services) 
    { 
    query += (" INSERT INTO ServiceChildren SET service='" + s + "', child_id=LAST_INSERT_ID();"); 
    } 

所以表应该是这个样子

id service child_id 
1 babysit 1 
2 tutor  1 

我用LAST_INSERT_ID(),因为child_id是一个外键。我在主键是child_id的另一个表中创建一条记录。之后,我使用LAST_INSERT_ID()引用该记录主键child_id,以便我可以在我的ServiceChildren表中使用它。

,因为它代表我的表如下:

id service child_id 
1  babysit 1 

我觉得我在正确的轨道上了。如果我直接登录到数据库中,这条语句的工作原理:

SET @last_id = LAST_INSERT_ID(); 
//then insert statements 
    INSERT INTO ServiceChildren(service, child_id) VALUES('babysit', @last_id); 
    INSERT INTO ServiceChildren(service, child_id) VALUES('tutor', @last_id); 

但在我的C#,ASP.NET代码行 SET @last_id = LAST_INSERT_ID(); 不做任何事情,甚至用先前的插入语句填充表。

+0

从上一个查询中获取LAST_INSERT_ID值,并在循环中使用该值。但是,请考虑将ASAP切换为参数化查询。字符串连接只是一个等待发生的灾难(阅读关于Sql注入) – Steve

+0

顺便说一下,您正在使用UPDATE的语法。这将不会使用INSERT语句 – Steve

+0

我不得不使用字符串连接,因为我找不到在ASAP中使用的正确的参数化查询。我知道这一点,因为它不停地插入'@Service'而不是保姆或导师。 – Bernardo

好的,我发现了我的问题。我需要将允许用户变量= True连接字符串中允许创建和使用@last_id