php - 删除数据库中表的记录后删除物理文件

标签 php mysql sql-server database

我要的是删除数据库中某表的记录后删除图片文件

我的数据库由 4 个表组成,用主键和外键链接。

这 4 个表是:品牌、产品、内容、促销。全部包含列“brandID”并有一列“文件路径”

表被更改为“ON DELETE CASCADE”,因此当删除“brandID”时,其他表的记录将被删除。

** 我将图像文件保存到服务器,文件路径到数据库。同样,我想要的是在删除表的文件路径(条目)时删除服务器中的物理文件..

非常感谢任何建议。

我是 DB 的新手,下面是我红色的链接..我需要更多信息..

再次感谢

Can we delete the physical file from server when I delete the corresponding entry from database?

How to delete files when a record is deleted?

delete file using MySQL procedure

最佳答案

MySQL 无法真正自动为您执行此类文件系统操作*。相反,向服务器发出 DELETE 语句的应用程序代码应该调用文件系统操作来删除文件。

因此你需要:

  1. 从数据库中选择文件路径;

  2. 从数据库中删除记录(级联外键约束可以保证所有关联的记录都被适当删除);和

  3. 从文件系统中删除文件。假设您的应用程序是在 PHP 中(因为您的问题被如此标记),在这种情况下您可以调用 unlink()删除文件。


* 这并不完全正确,因为可以使用 UDF 从触发器中删除文件,但这通常会打开许多​​安全漏洞,这些漏洞很少值得权衡。

关于php - 删除数据库中表的记录后删除物理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20044784/

相关文章:

php - 更新当前 URL,而不添加 URL

php - 警告 : session_destroy(): Trying to destroy uninitialized session

php - 从 Vagrant 中的 Chef Recipe 运行 PHP 脚本时 MySQL 不工作

MySQL多个表引用相同的外键

mysql - 从两张表中取出数据sql

php - 定位 Twitter Bootstrap 警告框时出错。

mysql - 如何将两列中的不同值计数为一个数字(后续)

sql-server - 批量插入到Sql Server

SQL 列在 ORDER BY 中无效,未包含在聚合或 GROUP BY 中

php - 如何通过xpath从网站获取标题?