2010-09-30 19 views
0

您好我有将数据插入一个MySQL表(A)形式(X)和比重定向到另一形式(Y),这将数据插入到另一个表(B),但我需要使用表A的最后插入的行。

我知道我可以从使用mysqli_insert_id函数得到它,但是当我提交表单Y并重新显示表单Y时,由于$ID的值已被清零,所以已经搞乱了。我试图通过这样做来输入id的值。

$id = (int)mysqli_insert_id($link); 

但这根本没有帮助。

回答

1

你可以使用会话来存储,而你正在处理的形式X的值,然后可以通过形式Y.拾起

X:

session_start(); 
$_SESSION['insert_id'] = 42; 

Y:

session_start(); 
$insert_id = $_SESSION['insert_id']; // 42 

请参阅the manual了解如何在完成该操作后销毁会话的示例。

+0

谢谢,我马上去会议 – cferbs 2010-09-30 21:45:37

2

你必须从形式之间mysqli_insert_id坚持的结果,无论是通过cookie,会话或隐藏的投入。

由于mysqli_insert_id只会返回它所调用的连接实例,而不是整个数据库,因此当您切换到另一个表单时,原始连接将关闭,并打开一个新连接,该连接尚未插入任何标识(因此为空值)。

我会亲自去与会话,但是这一切都取决于您的安全要求。

+0

以及我的安全不是一个大问题,这是对库存的要求非常简单的内部形式。它的所有一个控制器索引类只包含基于3个提交值的表单。我认为只有一个数据库连接是由索引类创建的,因为我把连接信息放在一个单独的文件中,并且对它做了include_once'db.php'。我是新来的PHP,并没有学习cookie或会话尚未....... – cferbs 2010-09-30 21:39:16

+0

谢谢我会看看会议。 – cferbs 2010-09-30 21:45:09

+0

如果有多个表单提交,则会有多个连接。虽然你通过相同的细节连接,但它不是同一个连接实例,就像两个相同的巧克力棒。如果你吃一个,那么第二个可能是同一个巧克力棒类型,但不是完全相同的巧克力棒(第一个已经消失,从未被检索到)。 – Psytronic 2010-09-30 21:46:23