我有一个用户详细信息更新的表单。页面上传后,用户将获得一些加载了当前数据库值的字段。
我可以允许他们上传图片,但它是可选的。提交表单后,所有字段都会更新,但问题出在图片上。我怎么能根本不更新图像字段,但仍然在我的更新功能中使用它。
这是一种可行的方法吗?
if (empty($_FILES['logo']['name'])) {
// No file was selected for upload, your (re)action goes here
}
这是我的功能:
public function update_header($pageTitle,$title, $slogan, $logo, $titleChoice, $sloganChoice, $logoChoice){
global $pdo;
$sql= "UPDATE `header` SET `pageTitle`=?,`title`=?,`slogan`=?,`logo`=?,`titleChoice`=?,`sloganChoice`=?,`logoChoice`=? WHERE `header_ID` =1";
$query = $pdo->prepare($sql);
$query -> execute(array($pageTitle,$title, $slogan, $logo, $titleChoice, $sloganChoice, $logoChoice));
return "has been successfully updated!!";
}
有什么想法吗?
答案 0 :(得分:0)
我怎么能根本不更新图像区域,但仍然在我的更新功能中使用它。
如果您无法修改update_header()
功能,则无法进行修改。问题是,函数内的SQL查询会影响logo
字段。因此,您在$logo
函数中的update_header
参数中传递的值均为converted to string (PDO::PARAM_STR
),最终将替换logo
字段的当前值。
如果你可以修改update_header()
函数......处理这个可选字段的一种方法是将if (empty($_FILES['logo']['name'])) {
子句置于函数内部并根据值区分行为,例如:
public function update_header($pageTitle, $title, $slogan, $logo, $titleChoice, $sloganChoice, $logoChoice) {
global $pdo;
if ( ! empty($logo) {
$sql= "UPDATE `header` SET `pageTitle`=?,`title`=?,`slogan`=?,`logo`=?,`titleChoice`=?,`sloganChoice`=?,`logoChoice`=? WHERE `header_ID` =1";
$query = $pdo->prepare($sql);
$query->execute(array($pageTitle,$title, $slogan, $logo, $titleChoice, $sloganChoice, $logoChoice));
} else { // logo empty, then do not update the field
$sql= "UPDATE `header` SET `pageTitle`=?,`title`=?,`slogan`=?,`titleChoice`=?,`sloganChoice`=?,`logoChoice`=? WHERE `header_ID` =1";
$query = $pdo->prepare($sql);
$query->execute(array($pageTitle,$title, $slogan, $titleChoice, $sloganChoice, $logoChoice));
}
// ...