-2

我是使用数据库的新手,所以也许我的问题很明显。我的变量是丹麦语,我希望你能理解。我已经在论坛上搜索过了,但是因为这对我来说是新的,我觉得很难理解。

用户应该使用个人资料图片创建个人资料,但是当我尝试保存它时发生错误。弹出我自己定义的错误,因为$billednavn == false.

编码:

<?php  

// 1. Gem modtagne formulardata i variabler:  
$navn = $_POST['navn'];  
$alder = $_POST['alder'];  
$postnr = $_POST['postnr'];  
$mail = $_POST['mail'];  
$billede = $_FILES['profilbillede'];  
$password = $_POST['password'];  



// 2. Forbind til databasen:  
$databaselink = mysqli_connect("localhost","mmddk3e12m8b18", "****", "mmddk3e12m8b18") or die     ("Fejl: Kan ikke etablere forbindelse til database");



$billednavn = billedupload($billede);  
// besked til brugeren om at der er sket en fejl    
if($billednavn == false){  
die("Der skete en fejl under upload af billedet");
}



// 3. Udform insert SQL streng med de modtagne data, og udfør SQL strengen på databasen vha     mysqli_query:  
$query = "INSERT INTO brugere (navn, alder, postnr, mail, password, profilbillede) VALUES ('$navn', '$alder', '$postnr', '$mail', '$password', '$billednavn')";  
$result = mysqli_query($databaselink, $query) or die( "Forespørgslen kunne ikke udføres: " .         mysqli_error($databaselink));  

// 4. luk databasen:  
mysqli_close($databaselink);  

function billedupload($fil){  
if($fil['type']=='image/jpeg' or $fil['type']=='image/png'){  
$tmp_navn = $fil['tmp_name'];  
$filnavn = $fil['name'];  
$target = 'images/' . time() . $filnavn;  
move_uploaded_file($tmp_navn,$target);  
return $target;  
}  
else{  
return false;  
}  
}  

?>
4

1 回答 1

0

如果它返回 false,那么 - 根据您的定义,文件类型不是 image/jpeg 或不是 image/png,或者未设置类型,或者未设置整个 $_FILES。

在您的 HTML 表单中,确保您拥有<form enctype="multipart/form-data" method="POST">并尝试var_dump($_FILES);在您的 PHP 文件中验证您的 POST 数据。

编辑: 在 tmp_name 为空的情况下,我可以想到两种可能的情况:

  1. 你忘了设置<form enctype="multipart/form-data">(更有可能,请验证)
  2. 在您的 php.ini 中确保file_uploads设置为On

当然,第一种选择更有可能。

于 2013-01-08T09:58:25.233 回答