繁体   English   中英

UPDATE SQL,如果不为null,则仅UPDATE映像

[英]UPDATE SQL, only UPDATE image if not null

我试图允许用户更新具有图像文件上传输入的表。 只有文件名存储在数据库中,例如image.jpg。 我的问题是,如果用户选择不更改图像,则它将清除数据库中的内容,因为它会发送空值。 如果输入文件不为空,如何仅更新IMAGE字段?

        // prepare and bind
    $stmt = $conn->prepare("UPDATE News SET 
                                        TITLE=?, 
                                        CONTENT=?, 
                                        IMAGE=?
                                        WHERE ID=?");
    $stmt->bind_param("sssd", $title, $content, $image, $id);

它比使用条件语句更简单:

逻辑:

if(condition){ do something } else{ do something else }

您可以将其与$_FILES数组结合使用,并作为示例:

if(!empty($_FILES['file'])){ 
  // execute SQL 
}

else{
  // do something else
}

不确定这是否是您要寻找的东西,因为您可能想要更复杂的东西

if (isset($image) && !empty($image))
{
    // your code
    $stmt = $conn->prepare("UPDATE News SET 
                                    TITLE=?, 
                                    CONTENT=?, 
                                    IMAGE=?
                                    WHERE ID=?");
    $stmt->bind_param("sssd", $title, $content, $image, $id);
}

要处理所有情况,请添加到Don Djoe的答案中:

if (isset($image) && !empty($image))
{
    // your code
    $stmt = $conn->prepare("UPDATE News SET 
                                TITLE=?, 
                                CONTENT=?, 
                                IMAGE=?
                                WHERE ID=?");
    $stmt->bind_param("sssd", $title, $content, $image, $id);
}
else
{
    // your code
    $stmt = $conn->prepare("UPDATE News SET 
                                TITLE=?, 
                                CONTENT=?
                                WHERE ID=?");
    $stmt->bind_param("ssd", $title, $content, $id);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM