好吧,这一个是让我疯了。我有一个后端文件上传器,可以将.jpg文件上传到服务器。然后我想将.jpgs的文件名上传到我的数据库。所以当页面加载时,我可以从数据库中添加文件名,图片将显示在页面上。这工作正常,但我也需要能够更新数据库中的文件和文件名。如果用户更改所有文件和文件名称,则一切正常。但是,如果用户只想更改一个或两个文件和文件名,则MySql更新语句最终会使一些变量为空,从而有效地删除记录中的现有文件名,而不是将它们留在单独的文件中。像往常一样,我已经搜索stackoverflow和谷歌之前寻求帮助,我还没有发现任何真正中肯的。这是适用的代码。MySQL更新一些数据库字段而不覆盖字段没有改变
<?php
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语句中上载带有文件名的变量。再次感谢您的帮助。 戴夫
感谢您的回复。我似乎无法弄清楚如何做到这一点 – user316717 2012-03-19 04:20:27
在让人们编辑文件的形式中,是否有6个上传文件,如果他们选择只上传三个文件,其他文件就会变成空的。 – 2012-03-19 04:36:01
我支持cilliosis的答案,这基本上是你的想法的实现 - 你正在检查,看看哪些字段不需要更新,只是留下你的更新查询。我还想指出,在你的示例代码中,你将所有5个图像设置为'$ pic1',这可能会造成它自己的问题。 – octern 2012-03-19 05:13:52