我有一个页面,其中有一个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吗?
答案 0 :(得分:1)
如果我理解你的情景,那么没有。 mysql_insert_id
(及其mySQL表兄LAST_INSERT_ID()
)将返回仅针对当前连接的有效的最后一个插入ID。这意味着如果您切换到下一页,将建立新连接,insert_id()
将无效。
解决方法可能是在进行查询后立即将插入ID放入会话变量中 - 然后它将在其他页面中可用。 (当用户打开多个标签/窗口并同时进行两次预订时,请务必小心 - 确保为每个预订流程使用某种标识符。)
答案 1 :(得分:1)
那么可以在else部分中获取最后插入的id吗?
你做不到。您应该尝试检索insert_id的唯一位置就在执行INSERT之后。您永远不应该在会话中存储特定于交易的数据 - 因此,如果您有多个插入ID并且需要在不同页面之间传递此信息,那么记录应该引用单个“主”记录(例如购物篮),因为这不会改变其在生命周期中,将此记录的标识符存储在会话中是安全的。
下进行。