通过此查询,我更新数据库中的图像字段:
$sql = $connection->prepare('UPDATE ads img1 = ?, img2 = ?, img3 = ? WHERE id = ?');
$sql->bind_param("ssss", $nameImg1, $nameImg2, $nameImg3, $id);
但如果用户更新所有3个图像,而不是只更新一个或两个图像,这个工作就可以了。如果用户只更改一个图像,例如 img2
, img1
以及 img3
将更新为空值,因为我使用了以下条件:
$img1 = $_POST["img-1-val"];
$img2 = $_POST["img-2-val"];
$img3 = $_POST["img-3-val"];
if($img1 != 'NULL'){
$nameImg1 = $date.'_'.$adsid.'_1';
}
if($img2 != 'NULL'){
$nameImg2 = $date.'_'.$adsid.'_2';
}
if($img3 != 'NULL'){
$nameImg3 = $date.'_'.$adsid.'_3';
}
在 html
:
<input type="hidden" name="img-1-val" value="NULL"/>
<!-- this already has image -->
<input type="hidden" name="img-2-val"/>
<input type="hidden" name="img-3-val"/>
如果每个图像都有图像,则值为 NULL
如果没有图像集,则为空;如果用户更改任何图像,则为空 base64
价值观。
但主要的问题是,我不想更新任何 img
数据库中的字段if $_POST
返回null作为值,它已经更新了所有字段,img1、img2、img3,这会导致删除以前的数据。如果值不等于null,如何更新数据库字段?
考虑这些代码在编辑页中运行。我的问题是 mysqli
查询not if
条件。
2条答案
按热度按时间jgwigjjp1#
所以,您只需在查询中使用不同的变量进行检查。
这将逐个检查图像,如果所有图像都有值,则将逐个更新所有三个图像。这也许有帮助。
xfyts7mz2#
您可以使更新查询动态化,如下所示:
这样,只有那些具有有效值的列才会被更新。