2017-02-04 2 views
-2

Это код php.Its не работает. Я храню в db имя изображения, а не изображение. i 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

Смежные вопросы