2017-01-16 149 views
0

我真的一直在爲解決我的問題而拼命。 我看了整個互聯網,但找不到任何理由,爲什麼我一直有這個問題。使用PHP將文件上傳到mysql

我的文件確實發送到我的服務器上的「上傳」文件,但細節不會發送到MySQL數據庫。我究竟做錯了什麼?

的index.php

<?php 
include_once 'dbconfig.php'; 
?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 
<body> 
<div id="body"> 
    <form action="upload.php" method="post" enctype="multipart/form-data"> 

    <div class='container'> 
    <label for='voornaam' >Naam*: </label><br/> 
    <input type='text' name='voornaam' /> 
    </div> 
    <input type="file" name="file" /> 
    <button type="submit" name="btn-upload">upload</button> 
    </form> 
    <br /><br /> 

</div> 
</body> 
</html> 

upload.php的

<?php 
include 'dbconfig.php'; 
if($_FILES["file"]["error"]>0) 
{ 
    echo "FILE ERROR"; 
    die(); 
} 
$filename = "uploads/".$_FILES["file"]["name"]; 
// move file to a folder 
if(move_uploaded_file($_FILES["file"]["tmp_name"], $filename)) 
{ 
    $sql="INSERT INTO tbl_uploads(name, file) VALUES('voornaam',$filename')"; 
    mysql_query($sql); 
    ?> 
    <script> 
    alert('successfully uploaded'); 
     window.location.href='index.php?success'; 
     </script> 
    <?php 
} 
else 
{ 
    ?> 
    <script> 
    alert('error while uploading file'); 
     window.location.href='index.php?fail'; 
     </script> 
    <?php 
} 
?> 
+1

你可以轉儲指出,MySQL的報告錯誤(假設有一個)? http://php.net/manual/en/function.mysql-error.php 編輯:另外值得注意的是,那些'mysql'司機已經走了渡渡鳥的路:http://www.php.net /manual/en/mysqlinfo.api.choosing.php –

+0

缺少sql文件中的單引號 - VALUES('voornaam',$ filename')'應該是'VALUES('voornaam','$ filename') ''但更好的使用準備好的語句並停止使用'mysql_ *'它被棄用,使用'mysqli'或'PDO' – RamRaider

+0

@ChrisSprague,沒有錯誤 – WouterS

回答

0
  • 首先丟棄這些已廢棄使用 準備的語句代替

這裏的解決方案

上傳.php

<?php 
include 'dbconfig.php'; 
if($_FILES["file"]["error"]>0) 
{ 
    echo "FILE ERROR"; 
    die(); 
} 
$filename = "uploads/".$_FILES["file"]["name"]; 
// move file to a folder 
if(move_uploaded_file($_FILES["file"]["tmp_name"], $filename)) 
{ 
    $sql="INSERT INTO tbl_uploads(name, file) VALUES('voornaam','$filename')"; 
    mysqli_query($db,$sql); 
    ?> 
    <script> 
     alert('successfully uploaded'); 
     window.location.href='index.php?success'; 
    </script> 
    <?php 
} 
else 
{ 
    ?> 
    <script> 
     alert('error while uploading file'); 
     window.location.href='index.php?fail'; 
    </script> 
    <?php 
} 
?> 

dbconfig.php

<?php 
//header('Content-Type: text/html; charset=ISO-8859-1'); 
define('DB_SERVER', 'localhost'); 
define('DB_USERNAME', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_DATABASE', 'tbl_uploads'); 
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 
?> 
+0

非常感謝,我如何在我的數據庫中獲得輸入形式的「voornaam」字段? – WouterS

+0

$ val = $ _ POST ['voornaam']; $ sql =「INSERT INTO tbl_uploads(name,file)VALUES('$ val','$ filename')」; –

0

首先,請閱讀PDO/mysqli的。

關於你的問題,你必須使用Mysql_*功能刪除'

enter image description here

+0

謝謝你的回覆。我肯定會閱讀關於PDO/MYSQLI,但我是一個新手,所以請理解。另外,如何將文本形式輸入框「voornaam」到我的數據庫? – WouterS