Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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同步数据库表和目录_Php_Mysql_Arrays_Performance - Fatal编程技术网

如何用php同步数据库表和目录

如何用php同步数据库表和目录,php,mysql,arrays,performance,Php,Mysql,Arrays,Performance,我有一个包含文件的目录和一个包含相同文件的数据库表。我希望能够将数据库表与目录同步。最有效的方法是什么?或者,我真的只能以一种野蛮的方式来做这件事吗 以下是我的方法: 1.以数组形式检索目录中的所有文件 2.以数组形式检索数据库表中的所有文件名 3.循环遍历目录数组中的文件值,并在数据库表数组上使用in_array()来验证文件名是否在该数组中,如果不在该数组中,则开始构建数组以插入缺少的文件名。运行db query将每个缺少的文件行添加到数据库表中 4.循环遍历目录数组并在目录数组上的_arr

我有一个包含文件的目录和一个包含相同文件的数据库表。我希望能够将数据库表与目录同步。最有效的方法是什么?或者,我真的只能以一种野蛮的方式来做这件事吗

以下是我的方法:
1.以数组形式检索目录中的所有文件
2.以数组形式检索数据库表中的所有文件名
3.循环遍历目录数组中的文件值,并在数据库表数组上使用in_array()来验证文件名是否在该数组中,如果不在该数组中,则开始构建数组以插入缺少的文件名。运行db query将每个缺少的文件行添加到数据库表中
4.循环遍历目录数组并在目录数组上的_array()中使用,在目录数组中找不到的任何内容都将从表中删除。

有没有更好的办法?或者在php中使用比在_array()中更好的方法?

您可以使用它来有效地确定两个数组之间的差异。以一种方式运行它来获取已添加的内容,以另一种方式(交换参数)来获取已删除的内容


(但是请注意,您可能希望对阵列的副本而不是原件进行操作。)

更像是单向更新,而不是同步。更新时是否需要保留数据库中的现有记录,或者重新创建主键等是否可以?我确实需要维护主键。单向更新是正确的,我只关心主键和它的文件名永远不会指向目录中不存在的文件。但也可能是一个文件(手动)添加到目录中,并希望为其分配一个可以在站点中引用的密钥。