我正在尝试创建一个循环,检查是否存在数据库中文件名的图像,如果不取消链接所有图像,因为我在文件夹中有很多重复项,但文件夹是 50gb。我无法检查每一个。
所以这是我尝试过的
$id = $_GET['id'];
$sql = "SELECT thumbnail FROM files WHERE id='$id'";
$query = $mysqli->query($sql);
$row = $query->fetch_assoc();
$thumb = $row['thumbnail'];
$records = "../upload/images/";
foreach ($records as $record) {
if (file_exists('../upload/images/'.$thumb)) {}
else {
@unlink('../upload/images/'.$thumb);
}
}
更新
$sql = "SELECT thumbnail FROM filesWHERE id='$id'";
$query = $mysqli->query($sql);
$row = $query->fetchAll();
foreach($sql as $search_result) {
if(file_exists($search_result['thumbnail'])) {
$img_source = ('../upload/images/'.$search_result['thumbnail']);
} else {
@unlink('../upload/images/'.$search_result);
}
}
这就是我理解的逻辑。检查文件夹中是否存在数据库中不存在的文件,如果有,请将其删除。
$directory = "../upload/images/";
$images = glob($directory . "*.jpg");
foreach($images as $image)
{
$sql = "SELECT thumbnail FROM files WHERE thumbnail =?";
$stmt = $mysqli->prepare($sql);
if($stmt) {
$stmt->bind_param('s', $image);
$stmt->bind_result($result);
$stmt->execute();
$stmt->fetch();
if(!$result) {
if(unlink($image)) {
echo "Image deleted $image <br>'n";
}
}
} else {
echo "Unable to prepare SQL";
}
}