Php 如何仅更新mysql表中的选定字段
我提出了一个问题来做我的工作。但它确实存在一些错误 1) mysql表中有6个图像字段和一些其他字段 2) 要更新,我使用html表单和6个文件上传文件,并标记为image1 image2 3) 所以,如果我只想更新第5张图片,我必须将新图片上传到表单中的image5中 为了更新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
$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 ."'".', ';
}
...
...