0

我有一个页面,其中有一个if...else用于处理输入数据的循环,该页面在提交时被还原两次,即单击一个名为“继续”的按钮,第二次是“添加到购物车”......现在在这种情况下,当单击“继续”按钮时,将if执行循环,在该循环中将数据插入数据库中,并在刷新时显示所有输入数据,这一次获得了另一个按钮“添加到购物车”。 . 当点击添加到购物车时,else条件/循环部分中包含的代码被执行。

现在我的问题是,如果数据最初是If部分插入,然后再else执行,那么我可以使用mysql_insert_id()else 部分中的函数来获取最后插入到该if部分中的数据吗?

以下是我正在谈论的代码类型:

If(Button Continue is clicked)
{
  insert query for a product table......
}
else Button Add to Cart is Clicked
{
  mysql_insert_id(); to fetch last id inserted in the above above loop/condition.. 
}

那么可以部分获取最后插入的idelse吗?

4

2 回答 2

1

如果我了解您的情况,那么不会。mysql_insert_id(及其 mySQL 表亲LAST_INSERT_ID())将返回仅对当前连接有效的最后一个插入 ID 。这意味着如果您切换到下一页,将建立一个新的连接并且insert_id()将无法正常工作。

一种解决方法可能是在进行查询后立即将插入 ID 放入会话变量中 - 然后它将在其他页面中可用。(当用户打开多个选项卡/窗口并同时进行两次预订时要小心 - 确保为每个预订过程使用某种标识符。)

于 2010-06-04T10:30:12.063 回答
1

那么可以在其他部分获取最后插入的ID吗?

你不能。您应该尝试检索 insert_id 的唯一位置是在执行 INSERT 之后。您永远不应该在会话中存储特定于事务的数据 - 因此,如果您有多个插入 ID 并且需要在不同页面之间传递此信息,那么记录应该引用单个“主”记录(例如购物篮),因为这不会改变它的生命周期中,将此记录的标识符存储在会话中是安全的。

C。

于 2010-06-04T12:03:17.073 回答