2013-02-19 3 views
1

업로드 된 이미지를 삭제하는 데 문제가 있습니다.PHP 링크 해제 오류

데이터베이스에 삽입하고 의 미세한 만 업로드하지만 삭제되지는 않습니다.

예 : 나는 두 테이블,modelImages 및 모델. In 모델 하나의 메인 이미지의 경로를 저장하지만 modelImage에 많은 이미지가있을 수 있습니다. 테이블은 modelID을 통해 링크됩니다.

경로 예 : img/1/1/someImageName.png.

(처음 1 - makerID, 두 번째 1 - modelID). 난 그냥 첫 번째 코드를 사용하는 경우

include('connect.php'); //connect to database 
$modelID=$_GET['modelID']; 
$makerID=$_GET['makerID']; 
$path="img/".$makerID."/".$modelID."/"; 

if ($stmt = $mysqli->prepare("SELECT images FROM modelImages WHERE modelID='$modelID'")) { 

    $stmt->execute();  
    $stmt->bind_result($images); 

    while ($stmt->fetch()) { 
     if($images!=$path){ 
      unlink($images); 
     } 
    } 

    $stmt->close(); 

} 
else { 
    printf("Prepared Statement Error: %s\n", $mysqli->error); 
} 

if ($stmt = $mysqli->prepare("SELECT mainImage FROM model WHERE makerID='$makerID' AND modelID='$modelID'")) {  

    $stmt->execute(); 
    $stmt->bind_result($mainImage); 

    while ($stmt->fetch()) { 
     if($mainImage!=$path){ 
      unlink($mainImage); 
     } 
    } 

    $stmt->close(); 

} 
else { 
    printf("Prepared Statement Error: %s\n", $mysqli->error); 
} 

, 그것은 modelImages에서 테이블을 모든 이미지를 삭제하고 난 그냥 두 번째 코드를 사용하는 경우, 그것은 모델 테이블에서 하나 개의 이미지를 삭제합니다.

Warning: unlink(img/1/1/image1.png) [function.unlink]: No such file or directory in /home/... 
Warning: unlink(img/1/1/image2.png) [function.unlink]: No such file or directory in /home/... 
Warning: unlink(img/1/1/image3.png) [function.unlink]: No such file or directory in /home/... 
Warning: unlink(img/1/1/image4.png) [function.unlink]: No such file or directory in /home/... 

결론 : 내가 함께 사용할 경우

는하지만 난 unlink() 오류를 얻는 내가 함께 querys의 모두를 사용하는 경우 작동하지 않습니다 연결을 해제.

+0

'echo getcwd();'PS :'unlink()'에 직접 사용자 입력을 받아들임으로써 위험에 처해 있습니다. – zerkms

+1

준비 진술을 잘못하고 있습니다. http://www.php.net/manual/en/mysqli-stmt.bind-param.php – Galen

+0

첫 번째 코드 섹션은 경로의 모든 이미지를 이미 삭제합니다. 이것이 두 번째'unlink();'가 경고를 던지는 이유입니다. – ihsan

답변

1

절대 경로가 현재 작업 디렉토리 (getcwd() 참조)인지 또는 b) 경로가 다른 작업 디렉토리 (예 : workdirectory - 인식 CLI 도구). 항상 절대 경로를 사용하거나 생성하십시오.

"/path/to/img/".$makerID."/".$modelID."/"; 
__DIR__ . "/../path/to/img/".$makerID."/".$modelID."/"; 

이식성이 뛰어 나기 때문에 두 번째 것을 선호합니다.

+0

'/ home/mainSite/public_html/site'을 가지고'$ path = "/ home/mainSite/public_html/site/img /".$ proizvodacID로 경로를 변경했습니다. ". $ modelID."/ ";'하지만 작동하지 않았습니다. – Vucko

+0

@Vucko는 이제 파일 확장명을 잊어 버린 것 같습니다 ... – KingCrunch