【发布时间】:2014-11-13 22:57:45
【问题描述】:
我在这里查看了类似的问题,但未能解决我的问题……非常感谢所有帮助!
基本上,我的 PHP 中有以下 SQL 代码:
$query = 'CREATE TEMPORARY TABLE tmp SELECT * from orders WHERE id='.$old_order_id.';
ALTER TABLE tmp drop id; # drop autoincrement field
UPDATE tmp SET groupID=null, timeOrdered=CURRENT_TIMESTAMP, totalOrderStatus=0;
INSERT INTO orders SELECT 0,tmp.* FROM tmp;
DROP TABLE tmp;';
$db->exec($query);
$new_order_id = $db->lastInsertId();
现在,我原以为 lastInsertId() 会成功返回最后插入“订单”的行的 ID。相反,我得到一个零——但我不知道这是因为它使用了表“tmp”的最后插入的 ID,还是因为我犯了其他一些错误。 (我不明白为什么它会从 tmp 获取 id,因为那不是最后插入的 id 真的......)
【问题讨论】:
-
...你确定它没有返回你插入
orders的0吗? -
你为什么要使用临时表和多个查询呢?这可以写成一个查询。
-
@IgnacioVazquez-Abrams 好吧......插入行的实际 id(在“订单”中)不是 0。这不应该是返回的内容吗?
-
@MikeBrant-我不知道如何复制一行,发现它是在网上完成的(如果我没记错的话,这里是这样)。我没有意识到有更好的方法,但我全神贯注!
-
@IgnacioVazquez-Abrams-我只是用 'null' 而不是 0 尝试了它,然后那里什么都没有,结果仍然是 0...
标签: php mysql lastinsertid