2012-09-15 4 views
1

에서 선택한 필드 난 내 일을 할 수있는 쿼리를했다. 그러나 그것은 약간의 실수로 작동합니다.만 업데이트하는 방법 MySQL의 테이블

1) 나는 6 파일 업로드 제출 및 image1에의 이미지 2로 표시와 HTML 양식을 사용 업데이트 6 개 이미지 필드와 MySQL의 테이블

2)에서 다른 필드가 ...

3) 그래서 만약 내가 단지 5 번째 이미지를 업데이트하고 싶다면 나는 image5에 새로운 이미지를 업로드해야합니다.

는 MySQL의 테이블을 업데이트 나는이 질문을했다.

$image=array(
1 =>$_FILES['image1']['name'], 
2 =>$_FILES['image2']['name'], 
3 =>$_FILES['image3']['name'], 
4 =>$_FILES['image4']['name'], 
5 =>$_FILES['image5']['name'], 
6 =>$_FILES['image6']['name'], 
); 
$i=1; 
    $sql = "UPDATE salehotel "; 
    $sql .="SET"." "; 
foreach($image as $value){ 
    if(!$value==""){  
    $sql .= "`image".$i."`"."="."'". $value ."'".",". " "; 
    $i++; 
    } 

} 

$sql .=" 
     `name`='$name', 
     `status`='$status', 
     `type`='$type', 
     `location`='$location', 
     `price`='$price', 
     `description`='$description' 
    WHERE 
     `property_id`='$edit' 
     "; 

3) 내가 모든 6 개 이미지를 업데이트하려면이 옵션을 사용하여이 오류없는 그것은 모든 일을 업데이트합니다.

4)하지만 난 하나의 이미지를 업데이트 할 때 (예 : 나는 하나 내가 이미지 5 필드에서 파일을 선택) 이미지 5를 업데이트하려면 생각이 쿼리는 항상 테이블에 첫 번째 이미지를 업데이트합니다. 그런 일이 왜

5) 나는 알고있다. foreach 루프 내 쿼리 내에서 ""같지 않은 $ 값을 찾고 있어요. $ i를 증가시킵니다. 그래서 그것은 오직 한 번만 증가했다. 그래서 image1을 업데이트하여 image5를 업데이트하려고합니다.

6) 어떻게 내가이 오류의 탐을받을 수 있나요?

고맙습니다.

+2

변경의 foreach() 루프를하고있을 경우 만약 검사 (5)마다 계산 : 나은 해결책이처럼 key을 가지고 foreach 루프 능력을 사용하는 것

파일 –

+0

약간의 시간을내어 미안 .. – Yasitha

답변

2
$_FILES['image2']['name']='zzzzzzzzzzzzzzzzzz'; 

$image=array(
1 =>$_FILES['image1']['name'], 
2 =>$_FILES['image2']['name'], 
3 =>$_FILES['image3']['name'], 
4 =>$_FILES['image4']['name'], 
5 =>$_FILES['image5']['name'], 
6 =>$_FILES['image6']['name'], 
); 


for ($i = 1; $i <= 6; $i++) { 
if(!empty($image[$i])){  
    $sql .= "`image".$i."`"."="."'". $image[$i] ."'".",". " "; 
    } 
} 

echo $sql; 
+0

이 사람은 내 문제를 해결했다. 대단히 감사합니다. – Yasitha

1

당신은 if 블록에서, $i++; 라인을 복용하여 그것을 간단하게 할 수 있습니다.

위에서 언급 한 수정 및 일부 수정하여 코드의 수정 된 버전 :

<?php 

$image=array(
    1 =>$_FILES['image1']['name'], 
    2 =>$_FILES['image2']['name'], 
    3 =>$_FILES['image3']['name'], 
    4 =>$_FILES['image4']['name'], 
    5 =>$_FILES['image5']['name'], 
    6 =>$_FILES['image6']['name'], 
); 
$i=1; 

$sql = 'UPDATE salehotel '; 
$sql .= 'SET '; 

foreach($image as $value) 
{ 
    if(!$value=='') 
     $sql .= '`image'.$i.'` ='."'". $value ."'".', '; 

    $i++; 
} 

$sql .=" 
     `name`='$name', 
     `status`='$status', 
     `type`='$type', 
     `location`='$location', 
     `price`='$price', 
     `description`='$description' 
    WHERE 
     `property_id`='$edit' 
     "; 

것은 당신이 내부 변수 나 다른 큰 따옴표가없는 한, 큰 따옴표를 사용하지 않도록하십시오.() for 루프에

<?php 

$image=array(
    1 =>$_FILES['image1']['name'], 
    2 =>$_FILES['image2']['name'], 
    3 =>$_FILES['image3']['name'], 
    4 =>$_FILES['image4']['name'], 
    5 =>$_FILES['image5']['name'], 
    6 =>$_FILES['image6']['name'], 
); 

$sql = 'UPDATE salehotel '; 
$sql .= 'SET '; 

foreach($image as $key=>$value) 
{ 
    if(!$value=='') 
     $sql .= '`image'.($key + 1).'` ='."'". $value ."'".', '; 
} 
... 
...