2017-02-04 1 views
-2

이것은 PHP 코드입니다. 작동하지 않습니다. 이미지의가 아닌 이미지의 db 이름에 저장됩니다. 내가이 문제에 대한 serached하지만 해결책을 찾을 수 없습니다. file_get_contents() 시도했지만 doesnt work.I은 서버 또는 코드 문제가 있으면 해달라고.

<?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

관련 문제