我在这里看过类似的问题,但未能解决我的问题…。所有的帮助都非常感谢!
基本上,我的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()将成功地返回上次插入'orders‘的行的id。相反,我得到了一个零--但我不知道这是因为它接受了表'tmp‘的最后一个插入ID,还是因为我犯了其他错误。(我不明白为什么要从tmp取id,因为这不是最后一个插入的id .)
发布于 2014-11-13 23:08:34
看起来,您只是尝试将一个现有的行复制到您的表中,并修改了一些数据。你为什么不简化一下,然后这样做:
INSERT INTO orders (
/* fields you are changing */
groupID,
timeOrdered,
totalOrderStatus,
/* other fields from select below that are not changing */
field1,
field2,
...
)
SELECT
/* values for fields you are changing */
null,
CURRENT_TIMESTAMP,
0,
/* other fields from order table that are to remain unchanged */
field1,
field2,
...
FROM orders
WHERE id = ?只要不为主键字段插入值(假设它是自动递增的),那么插入id就会正常工作。
发布于 2019-08-01 22:46:45
检查该行是否实际被插入。如果没有插入它,那么就没有新的Id了。这就是我发现正在发生的事情,结果是我没有在相关的表上为我的用户授予插入权限。
https://stackoverflow.com/questions/26920037
复制相似问题