Php 如何仅更新mysql表中的选定字段

Php 如何仅更新mysql表中的选定字段,php,mysql,foreach,sql-update,Php,Mysql,Foreach,Sql Update,我提出了一个问题来做我的工作。但它确实存在一些错误 1) mysql表中有6个图像字段和一些其他字段 2) 要更新,我使用html表单和6个文件上传文件,并标记为image1 image2 3) 所以,如果我只想更新第5张图片,我必须将新图片上传到表单中的image5中 为了更新mysql表,我做了这个查询 $image=array( 1 =>$_FILES['image1']['name'], 2 =>$_FILES['image2']['name'], 3 =>$_FILE

我提出了一个问题来做我的工作。但它确实存在一些错误

1) mysql表中有6个图像字段和一些其他字段

2) 要更新,我使用html表单和6个文件上传文件,并标记为image1 image2

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) 但是,当我尝试更新单个图像时,(例如:如果我想更新image5,那么考虑一下)或者我从image5字段中选择了一个文件,这个查询总是更新表中的第一个图像

5) 我知道为什么会这样。在foreach循环内的查询中,我只查找不等于“”的$value。然后增加$i。所以它只增加了一倍。所以它更新了image1或者我想更新image5

6) 那么我怎样才能克服这个错误呢

提前谢谢

$\u文件['image2']['name']='zzzzzzzzzzzzzzzzzzzz';
$_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;
$image=array( 1=>$\u文件['image1']['name'], 2=>$\u文件['image2']['name'], 3=>$\u文件['image3']['name'], 4=>$\u文件['image4']['name'], 5=>$\u文件['image5']['name'], 6=>$\u文件['image6']['name'], );
对于($i=1;$i您只需将
$i++;
行从
if
块中取出即可

代码的修改版本,以及上述修复和一些其他更正:

<?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'
      ";
将foreach()循环更改为for()循环,并在每次检查是否有文件时计数为5
<?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 ."'".', ';
}
...
...