如果图像不在服务器上,则从数据库中删除行

时间:2010-12-21 09:22:26

标签: php mysql

我有一个mysql数据库,其中包含以下格式的表:

ID:1
日期:2010-12-19
图片来源:5d61240f-7aca-d34b-19-12-10-15-36.jpg
文字说明:圣诞快乐

我想创建一个php脚本,它检查此表中的每一行,并检查图像是否存在于我服务器上的gallery文件夹中。如果图像不在gallery文件夹中,那么我想从我的数据库中删除该行。关于如何做到这一点的一些指示将非常感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

好的...使用glob()DirectoryIteratorfile_exists()mysql_mysqli_函数以及'DELETE FROM images WHERE id = ?'。 :)

希望这有帮助!如果您提供更多信息,我可以给您更详细的建议。到目前为止你尝试了什么?

编辑:等等,我误读了。您不需要目录功能,因为您已经拥有文件名。 dirname(__FILE__)可能有用。

答案 1 :(得分:0)

<?php

    define ("GALLERY_ROOT", "/path/to/gallery/" );

    $mysqli = new MySQLi ($host, $username, $password, $db);

    $result = $mysqli -> query ("
        SELECT
            id,
            image
        FROM
            table
    ");

    if ( $result ){
        while ($row = $result->fetch_assoc()) {
            if ( !is_file (GALLERY_ROOT . $row['image'] ) ){
                $mysqli -> query ("
                    DELETE FROM
                        table
                    WHERE
                        id = '" . $row['id'] . "'
                    LIMIT 1
                ");

                print "Deleted " . $row['id'] . "<br />";
            }
        }

        $result -> free();
    }

    $mysqli -> close();

    print "Congratz!! All invalid rows has been deleted!";
?>

这是一个快速的,我没有尝试实际运行它。

此外,如果您有很多行,那么您可能想重新考虑一次选择所有行。但是再次告诉我它是如何工作的