Php 从文件夹中删除与记录关联的图像

Php 从文件夹中删除与记录关联的图像,php,jquery,mysql,Php,Jquery,Mysql,我有一个页面,允许使用复选框删除多个记录,所有工作正常 然而,每个记录可能都有一个与之相关的图像存储在一个文件夹中,该文件夹也需要删除,但我不知道如何实现这一点,即使我搜索了Stackoverflow和Google 如何从MySQL数据库中删除记录以及从文件夹中删除与其关联的图像 到目前为止,我得到的是: 删除记录的代码: if ( isset( $_POST[ 'chk_id' ] ) ) { $arr = $_POST[ 'chk_id' ]; foreach ( $arr

我有一个页面,允许使用复选框删除多个记录,所有工作正常

然而,每个记录可能都有一个与之相关的图像存储在一个文件夹中,该文件夹也需要删除,但我不知道如何实现这一点,即使我搜索了Stackoverflow和Google

如何从MySQL数据库中删除记录以及从文件夹中删除与其关联的图像

到目前为止,我得到的是:

删除记录的代码:

if ( isset( $_POST[ 'chk_id' ] ) ) {
    $arr = $_POST[ 'chk_id' ];
    foreach ( $arr as $id ) {
        @mysqli_query( $KCC, "DELETE FROM pageContent WHERE contentID = " . $id );
    }
    $msg = "Page(s) Successfully Deleted!";
    header( "Location: delete-familyservices.php?msg=$msg" );
}
选择要删除的记录的表单:

<form name="deleteRecord" id="deleteRecord" method="post" action="delete-familyservices.php">

    <?php if (isset($_GET['msg'])) { ?>
        <p class="alert alert-success">
            <?php echo $_GET['msg']; ?>
        </p>
    <?php } ?>

    <table width="100%" class="table table-striped table-bordered table-responsive">
        <tr>
            <th>Page Title</th>
            <th>Page Text</th>
            <th>Page Image</th>
            <th>Delete</th>
        </tr>

        <?php do { ?>
        <tr>
            <td width="30%" style="vertical-align: middle">
                <h4 style="text-align: left">
                    <?php echo $row_rsContent['contentTitle']; ?>
                </h4>
            </td>
            <td width="45%" style="vertical-align: middle">
                <?php echo limit_words($row_rsContent['contentData'], 10);  ?> ...</td>
            <td align="center" style="vertical-align: middle">
                <?php if (($row_rsContent['contentImage']) != null) { ?>
                <img src="../images/<?php echo $row_rsContent['contentImage']; ?>" class="img-responsive">
                <?php } else { ?> No Image
                <?php } ?>
            </td>
            <td width="5%" align="center" style="vertical-align: middle"><input type="checkbox" name="chk_id" id="chk_id" class="checkbox" value="<?php echo $row_rsContent['contentID']; ?>">
            </td>
        </tr>
        <?php } while ($row_rsContent = mysqli_fetch_assoc($rsContent));  ?>

    </table>

    <p>&nbsp;</p>

    <div class="form-group" style="text-align: center">
        <button type="submit" name="submit" id="submit" class="btn btn-success btn-lg butt">Delete Selected Page(s)</button>
        <button class="btn btn-danger btn-lg butt" type="reset">Cancel Deletion(s)</button>
    </div>
</form>

页面标题 页面文本 页面图像 删除 ... “class=”img responsive“> 没有图像
您必须使用存储在数据库中的图像路径,如下所示:

unlink(' the link of the images which is fetched from db'); // correct

别忘了检查图像是否存在
文件\u exists()//

从另一个站点获得此信息,并进行了一些尝试和错误

if($_POST) {
    $arr = isset($_POST['chk_id']) ? $_POST['chk_id'] : false;
    if (is_array($arr)) {
      $filter = implode(',', $arr);
      $query = "SELECT *filename* FROM *table* WHERE *uniqueField* IN ({$filter})";
      $result = mysqli_query(*$con*, $query);
      while ($row = mysqli_fetch_object($result)) {
        $pathToImages = "*path/to/images*";
         {
            unlink("{$pathToImages}/{$row->contentImage}");
        }
      }
      // DELETE CAN BE DONE IN ONE STATEMENT
      $query = "DELETE FROM *table* WHERE *uniqueField* IN ({$filter})";
      mysqli_query(*$con*, $query);
      $msg = "Page(s) Successfully Deleted!";
      header("Location: *your-page.php*?msg=$msg");
    }
}
感谢所有做出贡献的人


希望这对其他人有所帮助。

您的代码容易受到攻击。您应该使用或准备带有绑定参数的语句,如中所述。特别是因为当您尝试与这些元素交互时,它会在和CSS中造成问题。不要了解您的问题所在。您得到了文件-然后删除它!据我回忆,PHP已经成功了t实际上从一开始就内置了文件系统包,这意味着很多年了。@AlexHowansky.Am正在使用mysqli(据我所知,PHP将不再支持mysql,我正在使用mysqli)这个页面和其他类似的页面将在安全登录之后。@JayBlanchard。所有id都是唯一的。我知道这类似于
取消链接(“../images/”)
,但我不知道在现有代码中放在哪里。
if($_POST) {
    $arr = isset($_POST['chk_id']) ? $_POST['chk_id'] : false;
    if (is_array($arr)) {
      $filter = implode(',', $arr);
      $query = "SELECT *filename* FROM *table* WHERE *uniqueField* IN ({$filter})";
      $result = mysqli_query(*$con*, $query);
      while ($row = mysqli_fetch_object($result)) {
        $pathToImages = "*path/to/images*";
         {
            unlink("{$pathToImages}/{$row->contentImage}");
        }
      }
      // DELETE CAN BE DONE IN ONE STATEMENT
      $query = "DELETE FROM *table* WHERE *uniqueField* IN ({$filter})";
      mysqli_query(*$con*, $query);
      $msg = "Page(s) Successfully Deleted!";
      header("Location: *your-page.php*?msg=$msg");
    }
}