2016-09-21 154 views
-2

我打算將圖像文件上傳到我的MySQL數據庫。有人可以幫我解決這個問題嗎?我嘗試了很多方法,但仍然無法上傳圖像。我一直在嘗試下面的代碼,但它總是得到這樣的錯誤:如果你真的想要的是在DB保存圖像,而不是實際的文件夾的將圖像上傳到MySQL數據庫時出錯

Error: INSERT INTO uploaded_images VALUES ('', asdasdasd , C:\xampp\tmp\phpE7CE.tmp) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':\xampp\tmp\phpE7CE.tmp)' at line 1

<!DOCTYPE html> 
<html> 
<body> 


<?php 
include("database/db_conection.php"); 

if ($_POST) { 

    $imagename = $_POST['imagename']; 
    $imagedata = mysqli_real_escape_string($conn ,$_FILES['image']['tmp_name']); 
    $imagetype = $_FILES['image']['type']; 


    if(substr($imagetype,0,5) == "image") { 

     $sql = "INSERT INTO uploaded_images VALUES ('', $imagename , $imagedata)"; 


     if (mysqli_query($conn, $sql)) { 
      echo "New record created successfully"; 
     } else { 
      echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
     } 

     mysqli_close($conn); 
    } 
} 
?> 

<form action="upload.php" method="POST" enctype="multipart/form-data"> 
Name: <input type="text" name="imagename"> <br>Select image to upload: 
<input type="file" name="image" id="fileToUpload"> 
<input type="submit" value="Upload Image" name="submit"> 
</form> 



</body> 
</html> 
+0

即使此代碼正常工作,它也會在存儲或檢索時破壞該文件。在存儲到數據庫之前,您需要'base64encode()'文件。此外,它是一個更好的主意,將文件存儲在文件系統上,並保留文件在數據庫中的路徑 – RiggsFolly

+0

對不起,我剛開始學習,導致我的教授希望我的系統能夠上傳照片,然後查看。我的計劃是將圖像存儲到我的數據庫,所以它會變成blob,然後生病只是從數據庫中檢索它,當我想通過使用增量ID查看該圖像..這是我的想法 – Jomai

回答

1

我不知道在您的項目中,但無論如何,插入查詢的格式應如下:

$sql = "INSERT INTO uploaded_images (image_name, image_data) VALUES ('$imagename' , '$imagedata')"; // assuming an autoincrement here 

您的查詢必須失敗;檢查你的PHP錯誤日誌。