如何在PHP的更新功能中更新任何内容?

时间:2015-04-25 23:48:01

标签: php sql-update

我有一个用户详细信息更新的表单。页面上传后,用户将获得一些加载了当前数据库值的字段。

我可以允许他们上传图片,但它是可选的。提交表单后,所有字段都会更新,但问题出在图片上。我怎么能根本不更新图像字段,但仍然在我的更新功能中使用它。

这是一种可行的方法吗?

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!!";
}

有什么想法吗?

1 个答案:

答案 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));
    }
    // ...