PHP MySQL向多个表插入数据

标签 php mysql database insert

我正在尝试制作一个实验性 Web 应用程序,以最大限度地减少冗余数据。 我设置了三个示例表,如下所示:

Table one
ID | created_at (unix timestamp) | updated_at (unix timestamp)

Table two
ID | Foreign Key to table one | Title

Table three (pages)
ID | Foreign Keys to both table one and two | Content | Metadata

想法是在应用程序中创建的所有内容都将有一个创建/编辑时间。

许多(但不是全部)事物都有标题(例如页面或页面进入的部分)。

最后,有些东西将具有特定于它们自己的属性,例如页面的内容和元数据。

我正在尝试找出将数据输入多个表的最佳方法。我知道我可以从 PHP 执行多个插入查询,跟踪在当前事务中创建的行,并在事务的后续部分失败时删除这些行。但是,如果 PHP 脚本完全终止,它可能会在所有删除完成之前停止。

MySQL 是否有任何允许拆分插入查询的内置逻辑?触发器是否能够处理这种类型的事务,或者它是否超出了它的能力?

如有任何建议、想法或想法,我们将不胜感激。

谢谢!

最佳答案

一个解决方案是使用 Transactions ,这允许获得“全有或全无”行为。

思路如下:

  • 您开始交易
  • 你做你的插入/更新
  • 如果一切正常,您提交交易;这将保存您在此交易期间所做的一切
  • 如果不是,则回滚事务;你在其中所做的一切都将被取消。
  • 如果您不提交并断开连接(例如,如果您的 PHP 脚本终止),则不会提交任何内容,并且您在未提交事务期间所做的操作将自动回滚.

更多信息,您可以查看12.4.1. START TRANSACTION, COMMIT, and ROLLBACK Syntax , 用于 MySQL。


请注意,事务仅适用于某些数据库引擎:

  • > MyISAM不支持交易
  • > InnoDB (它还支持外键,例如——它比 MyISAM 先进得多)

关于PHP MySQL向多个表插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582834/

相关文章:

database - 网页上的分页是如何工作的?

php - 从多列mysql中选择值

php - 安全问题?

php - 我的 PDO 查询是否安全,不会受到 SQL 注入(inject)的影响

用于间接浏览的 PHP 代理脚本

php - 似乎无法从数据库获取电子邮件和密码来登录?

mysql - 使用 SubSonic 检索一列值的最简单方法是什么(列不是主要的)

sql-server - 自动生成 SQL Server 数据库架构图

php - preg_match - 需要从 url 中获取字符串

php - 使用 PHP 实时从 MySQL 抓取数据?