2016-06-02 4 views
0

코드를 mysqli으로 변환하려고하는데 특정 데이터에 대해 데이터베이스에서 이미지를 검색하는 데 문제가 있습니다. 예를 들어, id 1은 그 페이지에 이미지를 게시합니다.mysqli를 사용하여 데이터베이스에서 이미지를 검색하는 방법?

내 코드를 확인해 주시겠습니까? 특정 데이터의 이미지를 보려고합니다. 너희들 나를 도울 수 있니?

<form action="upload_photo.php" method="POST" enctype="multipart/form-data"> 
    <div class="col-md-6"> 
     <div class="alert alert-info" role="alert"><span class="glyphicon glyphicon-user" aria-hidden="true"></span>&nbsp;&nbsp;Add/Update Photo</div> 
     <input type="hidden" name="id" value="<?= $id; ?>" /> 
     <input type="file" name="image"><br> 
     <input type="submit" value="Upload Image" name="submit"> 
    </div> 
    <div class="row"> 
     <div class="col-md-6 col-md-3"> 
      <a href="#" class="thumbnail"> 
      <img src="image_view.php?id=$id" alt="..."> 
      </a> 
     </div> 
      Updated Photo 
    </div> 
</form> 

이 내 PHP 업로드 이미지에 대한 코드는 다음과 같습니다 :

이 내 양식의 코드는 다음과 같습니다 감사합니다, 이건 내 코드입니다

<?php 

include '../session.php'; 
require_once 'config.php'; 


if (isset($_POST['submit'])) { 

    $imageName = mysqli_real_escape_string($conn, $_FILES["image"]["name"]); 
    $imageData = mysqli_real_escape_string($conn, file_get_contents($_FILES["image"]["tmp_name"])); 
    $imageType = mysqli_real_escape_string($conn, $_FILES["image"]["type"]); 

     if (substr($imageType, 0,5) == "image") { 
      $query = "UPDATE `crew_info` SET `image_name` = ?, `updated_photo` = ? WHERE `id` = ?"; 
      $stmt = mysqli_prepare($conn, $query); 
      mysqli_stmt_bind_param($stmt, 'ssi', $imageName, $imageData, $_POST['id']); 
      mysqli_stmt_execute($stmt); 
      $id = $_POST['id']; 

      header("Location: ../admin/view_all_info.php?id=$id"); 

     } 

     else { 

      echo "Image not Uploaded!"; 

     } 

} 

?> 

이 코드입니다 내 이미지를 검색하지만 작동하지 않습니다.

<?php 

include '../session.php'; 
require_once 'config.php'; 

if (isset($_POST['id'])) { 

    $id = mysqli_real_escape_string($_POST['id']); 
    $query = "SELECT * FROM `crew_info` WHERE `id` = ?"; 
    $stmt = mysqli_prepare($conn, $query); 
    mysqli_stmt_bind_param($stmt, 's', $_POST['id']); 
    mysqli_stmt_execute($stmt); 
    mysqli_stmt_bind_result($stmt, $id, $first_name, $middle_name, $last_name, $age, $month, $day, $year, $birth_place, $gender, $martial_status, $religion, $nationality, $email_address, $address_1, $address_2, $course, $school_graduated, $remarks, $date_added, $crew_status, $image_name, $updated_photo); 

    while (mysqli_stmt_fetch($stmt)) { 

     sprintf("%s", $updated_photo); 
    } 

    header("content-type: image/jpeg"); 
    sprintf("%s", $updated_photo); 

} 
else { 
    echo "Bad"; 
} 



?> 

이미지를 업로드하고 있지만 검색 할 수 없습니다. 제발 도와주세요들 감사합니다

+4

이미지를 데이터베이스에 저장하는 대신 이미지 이름 만 저장하십시오. 이미지를 표시 할 때/image_name 이미지 경로를 지정하십시오 (이 이미지 이름은 다른 필드 이름처럼 데이터베이스에서 가져와야 함) –

답변

0

몇 여기에 문제가있다 : 당신이 <img src="image_view.php?id=$id" alt="...">를 사용하여 HTML에서

  1. 가. 이렇게하면 서버에 GET 요청이 이루어 지므로 이미지를 출력하는 스크립트에 $_POST['id'] 대신 $_GET['id']이 필요합니다.
  2. 준비된 명령문을 사용할 때는 mysqli_real_escape_string()을 사용하면 안됩니다. 준비된 명령문을 실행할 때 mysqli가이를 처리합니다.
    또한 이미지를 가져 오기 위해이 스크립트를 사용하는 스크립트에서 데이터베이스 연결을 첫 번째 매개 변수로 보내지 않으므로 오류가 발생합니다. 편집 : 이스케이프 된 값을 사용하고있는 것처럼 보이지 않으므로 단순히 해당 행을 제거 할 수 있습니다. 그렇다에서

당신은 아마해야 :

  • 저장 파일 시스템에서 파일로 이미지. 내용이 민감한/보호되지 않은 경우 웹 서버의 루트에 어딘가에 넣을 수 있으므로 쉽게 링크를 포함 할 수 있습니다. 데이터베이스 유지 관리 및 백업 작업이 훨씬 쉬워집니다.
  • 지금 사용중인 방법을 사용하는 경우 이미지를 표시 할 때 필요한 것을 얻으십시오. 코드를 읽기 쉽도록 만들고 새로운 열은 다음을 수행하면 버그가 발생하지 않습니다 :
    SELECT updated_photo FROM crew_info WHERE id = ?.
+0

'$ _POST [ 'id']'를'$ _GET [ 'id']' 내 쿼리에서 나는 단지'$ id','$ image_name','$ upload_photo' 및 im을 선택 했으므로 PHP 뷰 뷰에서 데이터베이스 연결을 보내는 방법에 대해 미안하다. –

+0

@jessfernandez mysqli_real_escape_string()을 사용해서는 안되며'$ id' 값을 사용하지 않으므로 그 줄을 지우십시오. – jeroen

+0

예'mysqli_real_escapte_string 이미 제거한'나는''데이터베이스에 연결되어 있음 –

관련 문제