gpt4 book ai didi

php - 现有用户的 MySQL 更新/插入

转载 作者:行者123 更新时间:2023-11-30 00:07:57 25 4
gpt4 key购买 nike

我有一个表单,用于获取两个输入:user_avatar 和 user_backgroundpicture。我想从单个表单更新(如果现有用户)或插入(如果首次注册)它们。

这是我的代码:

<?php
ini_set("display_errors",1);
if(isset($_POST))
{
require '../_inc/db.php';
$Destination = '../Backgroundimages';
if(!isset($_FILES['BackgroundImageFile']) || !is_uploaded_file($_FILES['BackgroundImageFile']['tmp_name']))
{
//die('Something went wrong with Upload!');
$BackgroundNewImageName= 'background4.jpg';

move_uploaded_file($_FILES['BackgroundImageFile']['tmp_name'], "$Destination/$BackgroundNewImageName");
}
else{
$RandomNum = rand(0, 9999999999);

$ImageName = str_replace(' ','-',strtolower($_FILES['BackgroundImageFile']['name']));
$ImageType = $_FILES['BackgroundImageFile']['type']; //"image/png", image/jpeg etc.

$ImageExt = substr($ImageName, strrpos($ImageName, '.'));
$ImageExt = str_replace('.','',$ImageExt);

$ImageName = preg_replace("/\.[^.\s]{3,4}$/", "", $ImageName);

//Create new image name (with random number added).
$BackgroundNewImageName = $ImageName.'-'.$RandomNum.'.'.$ImageExt;

move_uploaded_file($_FILES['BackgroundImageFile']['tmp_name'], "$Destination/$BackgroundNewImageName");

}



require 'authenticationforupload.php';



$sql1="UPDATE user SET user_backgroundpicture='$BackgroundNewImageName' WHERE user_username = '$user_username'";


$sql2="INSERT INTO user (user_backgroundpicture) VALUES ('$BackgroundNewImageName') WHERE user_username = '$user_username'";

$result = mysql_query("SELECT * FROM user WHERE user_username = '$user_username'");
if( mysql_num_rows($result) > 0) {
mysql_query($sql1)or die(mysql_error());
header('location:../input.php?profile=updated');
}
else{
mysql_query($sql2)or die(mysql_error());
header('location:../input.php?profile=notupdated');

}








$Destination = '../uploads';
if(!isset($_FILES['ImageFile']) || !is_uploaded_file($_FILES['ImageFile']['tmp_name']))
{
//die('Something went wrong with Upload!');
$NewImageName= 'default.png';

move_uploaded_file($_FILES['ImageFile']['tmp_name'], "$Destination/$NewImageName");
}
else{
$RandomNum = rand(0, 9999999999);

$ImageName = str_replace(' ','-',strtolower($_FILES['ImageFile']['name']));
$ImageType = $_FILES['ImageFile']['type']; //"image/png", image/jpeg etc.

$ImageExt = substr($ImageName, strrpos($ImageName, '.'));
$ImageExt = str_replace('.','',$ImageExt);

$ImageName = preg_replace("/\.[^.\s]{3,4}$/", "", $ImageName);

//Create new image name (with random number added).
$NewImageName = $ImageName.'-'.$RandomNum.'.'.$ImageExt;

move_uploaded_file($_FILES['ImageFile']['tmp_name'], "$Destination/$NewImageName");


}



$sql5="UPDATE user SET user_avatar='$NewImageName' WHERE user_username = '$user_username'";


$sql6="INSERT INTO user (user_avatar) VALUES ('$NewImageName') WHERE user_username = '$user_username'";

$result = mysql_query("SELECT * FROM user WHERE user_username = '$user_username'");
if( mysql_num_rows($result) > 0) {
mysql_query($sql5)or die(mysql_error());
header('location:../input.php?profile=updated');
}
else{
mysql_query($sql6)or die(mysql_error());
header('location:../input.php?profile=notupdated');

}
?>

当 user_avatar 和 user_backgroundpicture 都上传时,表单工作正常。如果上传了任何一个,而另一个则保持原样,则 sql 的操作只会清空未给出输入的条目。

我想要的是,如果给出一个输入,则只有该输入应该插入到数据库中。另一个应该保持原样。

最佳答案

你可以试试这个:

/** Updates the database only if the file field isn't empty. **/
if( mysql_num_rows($result) > 0) {
if(!empty($_FILES['BackgroundImageFile'])){ // ALTERNATIVES: ($_FILES['BackgroundImageFile']['name']=='') or ($_FILES["BackgroundImageFile"]["error"] == 4)
mysql_query($sql1)or die(mysql_error());
header('location:../input.php?profile=updated');
}
} else {
<小时/>

提示:

  • 避免使用 mysql_* 函数。
  • 尝试重写代码以减少困惑。

关于php - 现有用户的 MySQL 更新/插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24358034/

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