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