【问题标题】:PHP MYSQL - Image upload errorPHP MYSQL - 图片上传错误
【发布时间】:2012-12-22 03:29:40
【问题描述】:

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

用户应该使用个人资料图片创建个人资料,但当我尝试保存时出错。弹出我自己定义的错误是因为$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;  
}  
}  

?>

【问题讨论】:

  • 您确定$_FILES 已设置吗?使用var_dump($_FILES) 对其进行调试。如果没有,您可能会错过&lt;form&gt; 中的enctype="multipart/form-data"
  • @Blauesocke 对不起,我写完答案后才看到你发帖
  • @ShaiMishali 没问题! :-)

标签: php database upload mysqli image


【解决方案1】:

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

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

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

  1. 您忘记设置&lt;form enctype="multipart/form-data"&gt;(很有可能,请验证)
  2. 在您的 php.ini 中确保将 file_uploads 设置为 On

当然,第一种可能性更大。

【讨论】:

  • 文件类型为 png。并且 enctype 已经设置好了。如何使用 var_dump?我不知道该命令现在我收到此错误:Warning: move_uploaded_file(web/images/1357640382portrætmig.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in / home/mmddk3e12m8b18/public_html/web/opretett.php 第 38 行警告:move_uploaded_file() [function.move-uploaded-file]:无法将“/var/tmp/phpPcUSlZ”移动到“web/images/1357640382portrætmig.jpg”在 /home/mmddk3e12m8b18/public_html/web/opretett.php 第 38 行
  • 我发现了如何使用它。它说: array(1) { ["profilbillede"]=> array(5) { ["name"]=> string(10) "Gordon.jpg" ["type"]=> string(0) "" [ "tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }
  • 根据您添加的信息更新我的答案。如果您需要其他帮助,请将您的 HTML 代码和 PHP 代码粘贴到 pastebin.com 或类似网站。
猜你喜欢
  • 2016-03-08
  • 2015-11-02
  • 2016-07-20
  • 2012-07-19
  • 2015-11-25
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多