gpt4 book ai didi

php - mysql使用第一个表中的auto_increment值作为第二个表中的外键插入到两个表中

转载 作者:行者123 更新时间:2023-11-29 00:46:18 24 4
gpt4 key购买 nike

我要插入到购物车表中

**orderId** | cartId | cartDate | cartStatus
____________________________________________
1 | 1 | 20120102 | complete
2 | 2 | 20120102 | complete
3 | 3 | 20120102 | complete
4 | 4 | 20120102 | complete

使用订单表中的自动递增值orderId

**orderId** | orderStatus | secret   | sauce
____________________________________________
1 | 7 | 020200202 | bbq
2 | 6 | 020200202 | bbq
3 | 6 | 020200202 | t
4 | 4 | 020200202 | m


INSERT INTO ordertable VALUES(null,7,020200202,bbq)

然后使用 orderId(现在为 5)

INSERT INTO carttable VALUES(orderId,20120102,complete)

但是,此插入必须作为同一查询完成。如果我使用 mysql_last_id (php),那么在执行我的购物车插入之前,其他人有机会插入到数据库中。或者连接可能会超时。数据库是 MyISAM(我无法更改这个,第 3 方解决方案)。

谢谢,J

最佳答案

我认为您对使用 mysql_last_id 的担忧是没有根据的——它将返回当前连接的最后一个 ID,而不是所有连接的全局最后一个 ID。

因此,除非您有多个线程共享同一个数据库连接,或者您在调用 mysql_last_id 之前在同一个连接上执行另一个身份插入,否则您应该没有什么可担心的。

ETA:您可以通过一次发送多个查询来完成此操作,如下所示:

INSERT INTO ordertable VALUES(null,7,020200202,bbq);
INSERT INTO carttable VALUES(LAST_INSERT_ID(),20120102,complete);

但是如果您使用 mysql_query,它通常不会让您在同一个调用中发送多个查询(主要是作为一种安全措施来尝试防止 SQL 注入(inject))。

关于php - mysql使用第一个表中的auto_increment值作为第二个表中的外键插入到两个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com