2017-02-04 74 views
-2

這是一個php代碼。它不工作。存儲在圖像名稱的db,而不是圖像。 我serached這個問題,但我無法找到一個解決方案。我試過file_get_contents()但沒有工作。我不是如果是服務器或代碼的問題。

<?php 
    $msg=""; 
    if(isset($_POST['submit'])){ 
     session_start(); 

     $target_dir="uploads/"; 
     $target_file=$target_dir . basename($_FILES["fileToUpload"]["name"]); 

     include 'dbh.php'; 

     $image=$_FILES['fileToUpload']['name']; 
     $image_tmp=$_FILES['fileToUpload']['tmp_name']; 
     $id=$_SESSION['id']; 
     $sql="UPDATE user SET image='$image' WHERE id='$id'"; 
     mysqli_query($conn,$sql) or Die("ERROR:" .mysqli_error($conn)); 

     if(move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_file)){ 
      $msg="Image uploaded successfully"; 
     } 
     else{ 
      $msg="There was a problem uploading image"; 
     } 

    } 

    ?> 




<form action="user_photo.php" method="post" enctype="multipart/form-data" target="iframe"> 
     <input type="file" name="fileToUpload" id="fileToUpload"> 
     <input type="submit" name="submit" value="Ngarko Foto"> 
     </form> 
+2

您是否真的想將圖像存儲到數據庫中,而不僅僅是'uploads'目錄中文件的名稱? – Barmar

回答

1

file_get_contents應該工作。但是圖像數據是二進制的,所以你不能把它替換成SQL。你應該使用一個準備好的聲明。

$image = file_get_contents($_FILES['fileToUpload']['tmp_name']); 
$sql = "UPDATE user SET image = ? WHERE id = ?"; 
$stmt = mysqli_prepare($conn, $sql); 
mysqli_stmt_bind_param($stmt, "bi", $image, $_SESSION['id']); 
mysqli_stmt_execute($stmt) or die(mysqli_error("ERROR:" .$conn)); 
+0

謝謝Barmar.u很棒! –

+0

你能解釋我,這是如何工作的? plz @Barmar –

+0

你不瞭解什麼部分?也許你應該閱讀關於準備好的陳述的教程。 – Barmar

相關問題