关于我的代码中的mysql_insert_id()应用程序的问题

时间:2010-06-04 10:27:16

标签: php logic if-statement mysql-insert-id

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

现在我的问题就好像数据最初插入If部分然后执行else一样,所以我可以使用else部分中的函数mysql_insert_id()来获取数据最后插入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.. 
}

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

2 个答案:

答案 0 :(得分:1)

如果我理解你的情景,那么没有。 mysql_insert_id(及其mySQL表兄LAST_INSERT_ID())将返回仅针对当前连接的有效的最后一个插入ID。这意味着如果您切换到下一页,将建立新连接,insert_id()将无效。

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

答案 1 :(得分:1)

  

那么可以在else部分中获取最后插入的id吗?

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

下进行。