Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL插入多条记录并在另一个表中引用它们_Php_Mysql - Fatal编程技术网

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可能是您在这种情况下的最佳选择。

我没问题。:-您可以对记录数据使用单个插入。