2017-09-23 3 views
0

블롭 유형을 사용하여 MySQL 데이터베이스에 그림을 저장하려고합니다. phpMyAdmin에서 직접 업로드 할 때 제대로 작동합니다. 하지만 내 PHP 코드에서 작동하지 않습니다. mysqli_error 방법은MySQL 데이터베이스에 이미지 삽입

잘못된 UTF8 문자열을 반환 '\ x89PNG'

통지를 내 데이터베이스에 연결 한 후 나는 코드를 사용

mysqli_set_charset($Inventory_db, 'utf-8'); 
mysqli_query($Inventory_db,"set names 'utf8'"); 

을 그리고 나는 그것을 제거 할 때 또는 jpg 이미지를 삽입하십시오, 그것은 또한 나에게 끔찍한 오류를 알려줍니다! 여기

은 다른 오류입니다 : 당신은 당신의 SQL 구문에 오류가

; \\ 0JFIF \ 0 ,, \ 0 \ 0 \ \ 0tExif \ 0 \ 0MM \ 0 * \ 0 \ 0 \ 0 \ 근처에서 사용할 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 '1시에

어떻게해야합니까?

+0

데이터 유형이 – Ravi

+1

인 테이블 구조를 게시하려면 이미지를 검색하고 INSERT 문을 실행하는 코드를 게시하십시오. 그렇지 않으면 튜토리얼 https://blogs.oracle.com/oswald/phps-mysqli-extension:storing-and-retrieving-blobs을 찾을 수 있습니다. – fyrye

+1

개인적으로 데이터베이스에 이미지를 저장하지 않습니다. 나는 서버에 이미지를 저장합니다. 데이터베이스에 경로를 저장합니다. 이렇게하면 데이터베이스가 더 가벼워집니다. 이미지를 사용해야 할 때 데이터베이스에서 경로를 검색하는 것이 빠르고 쉽습니다. – Marco

답변

1

LOAD_FILE() 기능을 사용할 수 있어야합니다. (@Marco에서 알 수 있듯이 ...) 웹 사이트의 https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_load-file

INSERT INTO ... (..., blob_col, ...) 
    VALUES 
    (..., LOAD_FILE('/path/to/file'), ...); 

에서 매뉴얼의 제한 사항을 참조하십시오, 그런 다음, 어딘가 디스크에있는 파일을 떠나 페이지가 렌더링되는 동안 <img src=...> 그것을 가져올 수 있도록 정상입니다 .

그렇지 않으면 Base64가 가장 좋은 방법 일 것입니다. 그것은 발자국을 8/6 확대합니다.

BLOB에 삽입하기위한 문자열을 구성하기 위해 8 비트 코드를 이스케이프하는 번거 로움이 있습니다.

질문의 utf8 내용은 부적합합니다. 이미지 BLOB이 아니라 TEXT이 아니어야합니다 (사용자가 base64 또는 다른 것을 인코딩 한 경우 제외).