2014-07-18 4 views
-1

나는 의 데이터베이스 테이블을 가지고 있습니다. Added_images. 내 테이블에는 image-1.jpg, image-2.jpg, image-3.jpg 등의 이미지 이름 목록이 포함되어 있습니다..폴더의 특정 파일 삭제

이라는 폴더가 있습니다. 여기에는 image-1.jpg, image-2.jpg, image-3.jpg, image-4.jpg, image-5.jpgimage-6.jpg과 같은 업로드 된 이미지가 모두 포함되어 있습니다.

폴더 이미지의 모든 사진을 Added_images 테이블과 대조하고 싶습니다. 그림이 테이블에 있다면, 나는 그것을 지키고 싶다. 그렇지 않으면 삭제하고 싶습니다. 내가 어떻게 이걸 얻을 수 있니?

+0

이미지가 테이블에없는 경우 이미지 안의 모든 파일을 삭제 하시겠습니까? – DTSCode

+0

image-1.jpg, image-2.jpg, image-3.jpg와 같은 이미지는 mysql 테이블에 있습니다. 따라서 이러한 이미지는 삭제하면 안됩니다. 나머지는 삭제해야합니다 (image-4.jpg, image-5.jpg, image-6.jpg). – najubudeendeveloper

답변

1
  1. 사용 scandir 또는 glob (또는 뭔가 다른) 디렉토리에있는 모든 파일을 포함하는 배열을 얻었다.
  2. 데이터베이스 목록에없는 파일 이름을 삭제하면서 이미지 목록을 반복합니다.

뭔가 같은 : 열심히 생각

:

$files = glob('Added_images/image-*.jpg'); 
$databaseFiles = getListOfFilesFromDatabase(); 

foreach ($files as $file) { 
    if (!in_array($file, $databaseFiles)) { 
     unlink($file); 
    } 
} 

당신은 분명히 경우주의 깊게 사용하기 전에 테스트해야 그것이 안 이미지 ...

편집 삭제 다음과 같이 좀 더 깔끔하게 표현할 수 있습니다.

$files = glob('Added_images/image-*.jpg'); 
$databaseFiles = getListOfFilesFromDatabase(); 

$filesToDelete = array_diff($files, $databaseFiles); 
array_map('unlink', $filesToDelete); 
+0

코드를 확인했습니다. 인자 : # 2는 29 행의 C : \ wamp \ www \ php \ my_folder \ delete.php에있는 배열이 아닙니다. 경고 : array_map() [array_diff() function.array-map] : 인수 # 2는 30 행의 C : \ Wamp \ www \ php \ my_folder \ delete.php의 배열이어야합니다. – najubudeendeveloper

+0

'getListOfFilesFromDatabase()'라는 함수를 구현 했습니까? 데이터베이스의 파일 목록? – simpleigh

관련 문제