mysql如何确保字段不被覆盖_MySQL更新某些数据库字段而不覆盖未更改的字段

博主遇到一个挑战,即在用户更新网站后台时,如何处理部分上传的.jpg文件并更新MySQL数据库。当用户只更改部分图片时,更新语句会清除未更改的文件名,导致数据库记录错误。博主寻求解决方案,希望能检查上传变量是否为空,避免空值更新数据库。
摘要由CSDN通过智能技术生成

好吧,这个让我疯狂。我有一个后端文件上传器,可以将.jpg文件上传到服务器。然后我想将.jpgs的文件名上传到我的数据库。所以当页面加载时,我可以从数据库中添加文件名,图片将显示在页面上。这工作正常,但我也需要能够更新数据库中的文件和文件名。如果用户更改所有文件和文件名称,则一切正常。但是,如果用户只想更改一个或两个文件和文件名,则MySql更新语句最终会使一些变量为空,从而有效地删除记录中的现有文件名,而不是将它们留在单独的文件中。像往常一样,我已经搜索stackoverflow和谷歌之前寻求帮助,我还没有发现任何真正中肯的。这是适用的代码。

session_start();

$id = $_SESSION['id'];

//This is the directory where images will be saved

$target = "imgs/";

// "http://www.surfcup.com/travel_site/images/ ";

$targetlogo = $target . basename( $_FILES['imageLogo']['name']);

$targetpic1 = $target . basename( $_FILES['image1']['name']);

$targetpic2 = $target . basename( $_FILES['image2']['name']);

$targetpic3 = $target . basename( $_FILES['image3']['name']);

$targetpic4 = $target . basename( $_FILES['image4']['name']);

$targetpic5 = $target . basename( $_FILES['image5']['name']);

//This gets all the other information from the form

$logo=($_FILES['imageLogo']['name']);

$pic1=($_FILES['image1']['name']);

$pic2=($_FILES['image2']['name']);

$pic3=($_FILES['image3']['name']);

$pic4=($_FILES['image4']['name']);

$pic5=($_FILES['image5']['name']);

// Connects to Database

mysql_connect("localhost", "surfcup_HotAdmin","password") or die ('I cannot connect to the database because: ' .mysql_error());

mysql_select_db("surfcup_hotels") or die('I cannot connect to the database because: .mysql_error());

$query="UPDATE Hotels

SET

hotel.imageLogo = '".$logo."',

hotel.image1 = '".$pic1."',

hotel.image2 = '".$pic1."',

hotel.image3 ='".$pic1."',

hotel.image4 = '".$pic1."',

hotel.image5 = '".$pic1."'

WHERE Hotels.id='".$id."'";

mysql_query($query) or die ('Error Updating Hotel '.mysql_error());

//stuff to upload the files below

?>我想我需要检查变量是否为空,并且不知何故不加载它们或者停止数据库接受空条目。然而,后者虽然会让用户在创建记录时添加6个文件。如果他们只有5或3呢?我似乎无法弄清楚我将如何检查变量是否为空,并只在UPLOAD语句中上载带有文件名的变量。再次感谢您的帮助。

戴夫

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值