我要开始输入我想要的东西。数据库输入副本
所以,我有一个表,其中每一行自动获得一个新的ID,并为每个新创建的行在那里,我希望该ID也被放入另一个表到特定的列。
数据库结构:事件
(这是表我想要的ID从复制)
事件ID |其它更多的列
的 -
数据库结构:jointable (这是我想要的“事件ID”复制到表)
事件ID |更多专栏。
所以,我希望我的EventID在我的表“事件”中放入事件时也会自动放入我的连接表中。
我要开始输入我想要的东西。数据库输入副本
所以,我有一个表,其中每一行自动获得一个新的ID,并为每个新创建的行在那里,我希望该ID也被放入另一个表到特定的列。
数据库结构:事件
(这是表我想要的ID从复制)
事件ID |其它更多的列
的 -
数据库结构:jointable (这是我想要的“事件ID”复制到表)
事件ID |更多专栏。
所以,我希望我的EventID在我的表“事件”中放入事件时也会自动放入我的连接表中。
使用返回上次插入的自动生成ID的函数。
在的MySql它LAST_INSERT_ID()
在SQL服务器它SCOPE_IDENTITY,IDENT_CURRENT,@@IDENTITY
例如在MySQL中,你可以做这样的事情
INSERT INTO event (column1,column2...) VALUES (...);
SET @last_event_id = LAST_INSERT_ID();
INSERT INTO jointable (EventID, column1, column2...) VALUES (@last_event_id, ...);
UPDATE: 要那么从客户端(php + mysqli)使用mysqli_insert_id()
你在这种情况下,代码如下
$db = mysqli_connect(...);
...
$query = "INSERT INTO event (column1, column2...) VALUES (...)";
mysql_query($query);
$last_event_id = mysqli_insert_id($db);
$query = "INSERT INTO jointable (EventID, column1, column2...) VALUES ($last_event_id, ...)";
mysql_query($query);
您正在使用哪个数据库
它的MySQL我正在使用。我会看看“LAST_INSERT_ID()”,看看我能否得到它的工作,谢谢。 – Marcus 2013-02-11 08:26:12
嗯,我不能让它开始工作,很快搜索了谷歌,并没有发现任何我明白如何使用。我会发布一个链接与我所有的mysql查询,并希望你能告诉我som的方向,当你知道它是如何在我的代码结构。下面是我的代码:pastebin.com/nqmcSJ74 – Marcus 2013-02-11 10:28:05
查看更新的答案。不要使用'mysql_'扩展名,因为它已被弃用。通过[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)使用[预先准备的语句](http://goo.gl/vn8zQ)。您的代码易受sql注入攻击。清理所有用户输入并使用准备好的语句来避免它。 – peterm 2013-02-11 12:31:04
? – 2013-02-11 08:09:58
您可以使用“插入式”触发器,但也许有更好的数据库设计,可以避免将相同的数据放在两个地方?你究竟想要完成什么? – 2013-02-11 08:11:54
@Marcus - 您正在使用哪种RDBMS? SQL服务器或MySQL? – 2013-02-11 08:17:39