2012-06-18 2 views
0

내 시나리오는 다음과 같이이다 :검증 여러 파일 입력 MySQL의 쿼리

<input type="file" name="image[]" /> 
<input type="file" name="image[]" /> 
<input type="file" name="image[]" /> 
<input type="file" name="image[]" /> 

내 데이터베이스 필드 테이블은 다음과 같습니다

ID = 1 
image1 = image1.jpg 
image2 = image2.jpg 
image3 = image3.jpg 
image4 = image4.jpg 

이의이 행 ID = 1이 이미 값이 이전과 경우 삽입했다 가정 해 봅시다 사용자는 image1과 image4를 업데이트하여 원하는 이미지 파일을 찾아 선택하고 image2와 image3을 비워 둡니다. 내가 확인하는 쿼리를 어떻게해야합니까

ID = 1 
image1 = newimage1.jpg 
image2 = image2.jpg 
image3 = image3.jpg 
image4 = newimage4.jpg 

:

다음은 MySQL의 쿼리를 실행 한 후 개념입니까?

현재 내 코드는 이와 비슷하며 PHP/mysql을 처음 사용하는 사람들은 여기에서 계속하는 법을 모릅니다.

foreach ($_FILES['product_image']['name'] as $key => $value) { 
if(!empty($value)) { 
       `$upt=mysql_query("update products_list set` `image1='$pic1',image2='$pic2',image3='$pic3',image4='$pic4' where id='$id'");` 
} 
} 

희망은 여러분에게 분명합니다. 미리 감사드립니다. =)

답변

1

는 올바른 필드를 업데이트하는 카운터를 사용할 수 있습니다

물론
foreach ($_FILES['product_image']['name'] as $key => $value) { 
    if(!empty($value)) { 
     // field names starts from 1 
     $field = 'image'.($key+1); 
     mysql_query("UPDATE product_list ". 
        "SET $field = '$value' ". 
        "WHERE id = $id"); 
    } 
} 

, 이것은 당신이 양식에서 전송되는 내용에 따라 네 번 개까지 같은 레코드를 업데이트해야한다는 것을 의미한다. 또한 mysql_escape_string()과 같은 것을 사용하여 사용자 입력을 이스케이프 처리해야합니다.

+0

도움에 감사드립니다. 내가 올바르게 이해한다면, SET $ 필드는 내가 가지고있는 입력의 개수에 따라 필드를 업데이트하고 있습니까? 4 개의 파일 입력이 있다면, 바로 그 문장으로 4 개의 필드로 업데이트를 호출 할 것인가? 그리고 $ key에 1을 더할 수 있습니까? 배열은 0부터 시작하기 때문에? 또는 유일한 방법은 내 데이터베이스 필드를 편집하는 것입니다? – Dr3am3rz

+0

어쨌든, 그것을 시도하고 그것을 작동! 도와 주셔서 감사합니다. 2 일 동안 붙어 있습니다. = (그러나 여전히 $ 키 배열의 값을 추가하는 방법을 알아 냈습니다. – Dr3am3rz

+0

@ user1462863 - 내 대답을 업데이트했습니다. – Cyclonecode

0

나는 product_images 테이블을 가지고있는 것이 더 좋을 것이라고 생각합니다. 이렇게하면 제품에 1 개 또는 여러 개의 이미지가있을 수 있습니다. 양식은 동일하게 유지 될 수 있지만 새 이미지 표의 각 레코드에 products.id을 연결하면됩니다.

새 제품을 추가 할 때 제품을 만든 다음 양식에 업로드 한 각 이미지에 대한 이미지 레코드를 삽입합니다.

제품을 편집 할 때 사진을 삭제하거나 새 사진을 쉽게 추가 할 수 있습니다.

// remove an image 
mysql_query("delete from product_images where product_id=$pid and id=$iid"); 

// add a new image 
mysql_query("insert into product_images (product_id, image) values ($pid, '$filename')"); 

참고 :이 쿼리를 직접 사용할 수 없습니다. SQL 인젝션을 방지하기 위해 적절한 예방 조치를 취하고 있는지 확인하십시오.

+0

도움 주셔서 감사합니다. 여전히 이미지 옆에 다른 입력 필드가 있기 때문에 아직 이해가 안갑니다. – Dr3am3rz