Php 将unlink()与sql delete绑定

Php 将unlink()与sql delete绑定,php,delete-file,unlink,Php,Delete File,Unlink,我设置了一个简单的while循环,它返回表中的所有图像以及它们各自的标题和描述,以便用户可以相应地更新每个图像的详细信息 返回的图像带有一个复选框,该复选框允许用户根据php代码删除图像 if($_POST['doDelete'] == 'Delete') { if(!empty($_POST['u'])) { foreach ($_POST['u'] as $uid) { $id = filter($uid); mysql_query("delete

我设置了一个简单的while循环,它返回表中的所有图像以及它们各自的标题和描述,以便用户可以相应地更新每个图像的详细信息

返回的图像带有一个复选框,该复选框允许用户根据php代码删除图像

if($_POST['doDelete'] == 'Delete') {

if(!empty($_POST['u'])) {
    foreach ($_POST['u'] as $uid) {
        $id = filter($uid);
        mysql_query("delete from landscape where id='$id'");
    }
 }
 $ret = $_SERVER['PHP_SELF'] . '?'.$_POST['query_str'];;

 header("Location: $ret");
 exit();
}

如何将取消链接功能合并到页面中,以便文件也从服务器中删除?

那么,服务器上存储的文件在哪里?它们是如何储存的?只需使用指向图像存储位置的文件路径调用unlink即可。

如果图像是根据ID命名的:

foreach ($_POST['u'] as $uid) {
    $id = filter($uid);
    mysql_query("delete from landscape where id='$id'");
    unlink( '/path/to/images/' . $id);
}
在查询或unlink语句中使用$id之前,请确保正确转义$id。

只需使用unlink with in loop,如:

foreach ($_POST['u'] as $uid) {
    $id = filter($uid);
    if(mysql_query("delete from landscape where id='$id'")){
    unlink( '/path/to/images/' . $id);
    }
}
我使用了If,因为如果文件仅从数据库中成功删除,那么它将从服务器中删除。 另外,如果您已按文件名将文件移动到文件夹中,则首先按$id从数据库中获取有关文件的信息,然后使用

unlink( '/path/to/images/' . $file_name);
反而

unlink( '/path/to/images/' . $id);

希望它能对您有所帮助。

只需在mysql\u查询后添加unlinkfoo?您真的应该在查询中转义该变量…@Michael:$id=filter$uid似乎在起作用?@Cyclone:可能不是标准的库函数;也许他化名为mysql\u real\u escape\u string来过滤代码中的其他地方…@Michael:我的意思是,他在处理代码中的净化问题,不管我们是否能看到确切的函数;在上述代码上的取消链接声明之后,如果图像存储在/images/scarland/中,它如何识别要取消链接的正确文件名?是否必须指定此文件名,例如使用“images/scarland/”。。。。?或者,当选中radiobox时,以下操作是否有效。foreach$_POST['u']作为$uid{$id=filter$uid;mysql\u querydelete from landscape,其中id='$id';unlink'/images/landscape/'.$id;}如果这能让事情变得更简单,我很乐意发布我的整个代码,而不是像上面那样只发布一个片段,谢谢@JD2011:如果“/images/landscape/”,您在评论中发布的代码片段将起作用$id是有效的文件名。是吗?嗯,我现在听起来真的很蠢,我能想到的唯一有效的文件名是数据库中的imagesrc字段,所以假设我应该使用unlink;而不是取消“/images/landscape/”.$id;。。。。。我走对了吗!?我不确定$rrows['imagesrc']包含什么,因为它没有出现在您上面发布的代码片段中。但是,如果它包含包含完整路径的文件名,您可以这样使用它:取消链接$rrows['imagesrc'];不需要使用,因为您已经在PHP代码块中。它们存储在服务器/images/landscape/I上的文件夹中。例如,mysql中还有一个指向images/landscape/1.jpg的imagesrc字段,因此我可以简单地使用此字段取消链接。。。。?为我的愚蠢感到抱歉-直到今天才听说取消链接,因为以前将图像存储为数据库中的斑点,不想错误地删除所有内容!!这个答案不是很有帮助。这更像是一个comment.IMO。这是一个比公认的答案更好的答案。您还可以进一步添加else子句以输出mysql\u错误语句