2017-06-04 65 views
0

我再次回到編程中,目前我無法將圖像上傳到我的數據庫。 昨晚我正在閱讀一些代碼和答案,我仍然在這裏......它返回「新記錄創建成功」,但沒有任何數據正在我的數據庫中存儲。希望有人能幫我解決這個問題:)謝謝!上傳圖像並存儲到數據庫

<form method="post" action="" enctype="multipart/form-data"> 

    Upload File: 
    <input type="file" name="upload" /><br> 
    <input type="submit" name="submit" value="Submit"/> 
</form> 
</body> 
</html> 

<?php 
    $servername ="localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "produ_db"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
if(isset($_POST['submit']) ){ 


$filename = $conn->real_escape_string($_FILES['upload']['name']); 
$filedata= $conn->real_escape_string(file_get_contents($_FILES['upload']['tmp_name'])); 


if ($_FILES['upload']['name'] == 0){ 

echo "<br><br> New record created successfully"; 

} 

else { 
    /*where acc_cap is the image caption && acc_img is a blob type to store images*/ 
    $query = "INSERT INTO accessories(`acc_cap`,`acc_img`) VALUES ('$filename','$filedata')" ; 
    if ($conn->query($query) === TRUE) { 
    echo "<br><br> New record created successfully"; 
    } else { 
    echo "Error:<br>" . $conn->error; 
    } 

} 
$conn->close(); 
} 

?> 
+0

將文件存儲在文件系統中更爲常見。對於大於100k的文件,這樣做是沒有意義的。 – Strawberry

+0

嗨,只是做了,並使它的工作,看到我對manassehkatz的評論:)感謝信息雖然:)有​​一個美好的一天 –

回答

1

1 - 你必須:

echo "<br><br> New record created successfully"; 

兩次 - 無論是成功(後插入)和失效($_FILES['upload']['name'] == 0)。更改失敗消息,以便您可以知道發生了什麼。

2 - 移動:

$filename = $conn->real_escape_string($_FILES['upload']['name']); 
$filedata= $conn->real_escape_string(file_get_contents($_FILES['upload']['tmp_name'])); 

到下面的$_FILES['upload']['name']作爲的file_get_contents功能測試,如果沒有文件名會失敗。

3 - 檢查我自己的代碼,看起來我通常使用$_FILES['upload']['name'] == ''而不是== 0。 PHP經常將0和空字符串類似地處理,但在這種情況下,我相信空字符串是正確的比較,因爲當它具有實際文件名時,這是一個字符串字段。

4 - 通常認爲存儲數據庫中的完整圖像(或其他)文件的格式不正確 - 只需在數據庫中存儲文件系統(參見http://php.net/manual/en/function.move-uploaded-file.php)即可。這就是說,有時它是有道理的,我有時在數據庫中存儲完整的文件。

+0

感謝您的快速答覆..我目前正在檢查此:) :) –

+0

好吧,我會回顧之後提到的#3,我成功上傳了該文件。所以我編輯我的代碼,並添加「錯誤」,因爲你已經提到,感謝您注意它:https://pastebin.com/FEBFshB3 我現在越來越「錯誤:無法存儲圖像」 –

+0

嗨,我看到你的現在編輯的帖子:)我刪除了0,並添加了''根據您的建議,我感謝你:) 我現在得到未定義的變量在第33行: $ query =「INSERT INTO accessories('acc_cap',' acc_img')VALUES('$ filename','$ filedata')「; 未定義的變量filedata,文件名..但事情是,它打印新的記錄創建成功,並在我的數據庫,blob文件有0kb和acc_cap有空白數據 –

相關問題