如何在PHP的更新函数中不更新任何内容?

如何在PHP的更新函数中不更新任何内容?,php,sql-update,Php,Sql Update,我有一个更新用户详细信息的表单。一旦页面上传,用户将获得一些加载了当前数据库值的字段 我可以允许他们上传图片,但这是可选的。提交表单后,所有字段都会更新,但问题在于图像。我怎么能不更新图像字段,但仍然在更新功能中使用它呢 这是一种可行的方法吗 if (empty($_FILES['logo']['name'])) { // No file was selected for upload, your (re)action goes here } 这是我的职责: public functi

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

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

这是一种可行的方法吗

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!!";
}
有什么想法吗

我怎么能不更新图像字段,但仍然在更新功能中使用它呢

如果无法修改
update\u header()
函数,则不可能。问题是,函数中的SQL查询会影响
logo
字段。因此,您在
update\u header
函数中传递的
$logo
参数中的任何一个值都将是,并最终将替换
logo
字段的当前值

如果您可以修改
update\u header()
函数。。。处理此可选字段的一种方法是将
if(empty($\u 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));
    }
    // ...

您可以检测用户是否想要更改图像,如果不想,则不要在更新查询中包含与图像相关的列/值。是的,我想您可以使用两种不同的语句,一种是img update,另一种是WithBurst。是否有更简单的方法来更改图像?if(空($_FILES['logo']['name'])){//没有选择要上载的文件,您的(重新)操作将在此处执行}感谢您的帮助!我所做的是获取表中已有的数据,如果数据未更改,则重新输入,如果数据已更改,则使用新变量更新数据。您认为我使用的方法更好还是更好?或者两者都类似@bostaf@user3032640还有第三种方法——不是更新现有的记录d、 删除它并重新输入。我认为如果您对您的解决方案更满意,那么它比我建议的要好。我个人认为这三种方法中没有一种总体上更好。它们可能在某些特定的应用程序/条件下更好,但不是总体上更好。