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

时间:2015-04-01 02:47:18

标签: php mysql

我试图允许用户更新具有图像文件上传输入的表。只有文件名存储在数据库中,例如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);

3 个答案:

答案 0 :(得分:1)

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

逻辑:

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

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

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

else{
  // do something else
}

答案 1 :(得分:0)

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

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);
}

答案 2 :(得分:0)

为了适用于所有情况,请添加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);
}