Php MySQL插入多条记录并在另一个表中引用它们
我想让这个调查尽可能的通用,我不想进入细节,而是想学习一个普遍接受的方法来解决这个问题 我有一些数据,结构如下:Php MySQL插入多条记录并在另一个表中引用它们,php,mysql,Php,Mysql,我想让这个调查尽可能的通用,我不想进入细节,而是想学习一个普遍接受的方法来解决这个问题 我有一些数据,结构如下: $data => Array ( [0] => Array ( [field_index] => 2 [comment] => damage of object 1 [image] => Array (
$data => Array
(
[0] => Array
(
[field_index] => 2
[comment] => damage of object 1
[image] => Array
(
[url] => /path/to/file/my_image.jpg
[fname] => my_image.jpg
[fsize] => 77005
)
),
[1] ...
[2] ...
)
我试图将其插入两个表文件和记录中,其中图像数据存储在第一个表中,而参考图像ID的记录数据存储在第二个表中
我能做的唯一方法是循环遍历所有项并逐个运行INSERT查询,如下所示:
foreach($data as $item){
// INSERT IMAGE TO FILES TABLE
// GET INSERT_ID
// INSERT ITEM DATA TO RECORDS (USE INSERT_ID OF IMAGE AS REFERENCE)
}
我的问题是:
a与在单个查询中插入多行相反,逐个运行insert查询可以吗?
b是否有一种替代方法来实现我在两个表中引用数据之后的目标
我想单独保存文件数据,因为:
并非所有记录都有图像数据
$data可能有修订,其中一些记录可能会更改,但不是全部,我不希望有多余的图像记录
你有两个选择- 您可以分别插入记录,从父项开始,到子项结束。您可以使用Last_Insert_Id将最后一个Id插入MySQL,这允许您插入父项,获取其主键,然后将其包含在子记录的任何插入中。我通常在MySQL存储过程中返回最后一个\u Insert\u Id作为输出参数,以便调用代码能够管理它。 您还可以使用单个insert命令向表中插入多行-这是插入大量记录的一种更快的方法 使用ORM对象关系管理器,这样您就可以将数据插入到代码中的对象中,这意味着您不必担心SQL方面的问题,因为ORM包装器为您处理与数据库的通信。对于现有项目来说,这是一个相当大的变化,但可能是值得的。
关于ORMs的一个注意事项——我处理过的很多问题都不能很好地批量插入数千条或上万条记录,因此SQL可能是您在这种情况下的最佳选择。我没问题。:-您可以对记录数据使用单个插入。