gpt4 book ai didi

php - MySQL更新一些数据库字段而不覆盖字段未更改

转载 作者:可可西里 更新时间:2023-11-01 08:36:47 25 4
gpt4 key购买 nike

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

<?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



?>

我想我要么需要检查变量是否为 null 并且以某种方式不加载它们,要么阻止数据库接受 null 条目。后者虽然会使用户在创建记录时必须添加 6 个文件。如果他们只有 5 或 3 个怎么办?我似乎无法理解如何检查变量是否为空,并且只在 UPLOAD 语句中上传其中包含文件名的变量。再次感谢您的帮助。戴夫

最佳答案

我认为更好的方法是动态构建查询。例如:

$images = array();
$images[] = ($_FILES['imageLogo']['name']);
$images[] = ($_FILES['image1']['name']);
$images[] = ($_FILES['image2']['name']);
$images[] = ($_FILES['image3']['name']);
$images[] = ($_FILES['image4']['name']);
$images[] = ($_FILES['image5']['name']);

// Looping index to determine which hotel image it is
$index = 0;

// Start building query
$query = "UPDATE Hotels SET hotel.imageLogo = '".$images[0]."'";

// Loop through images and check if empty string
foreach($images as $image)
{
if(!empty($image) && $index != 0)
{
// Image name found, add to query
$query .= " hotel.image".$index." = '".$image."',";
}
// First hotel image iteration needs to be 1
$index++;
}

// Finish query
$query .= " WHERE Hotels.id='".$id."'";

关于php - MySQL更新一些数据库字段而不覆盖字段未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com