> 백엔드 개발 > PHP 튜토리얼 > 내 PHP 코드가 MySQL BLOB 열에 이미지를 삽입하지 못하는 이유는 무엇입니까?

내 PHP 코드가 MySQL BLOB 열에 이미지를 삽입하지 못하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-30 09:33:11
원래의
131명이 탐색했습니다.

Why is my PHP code failing to insert images into a MySQL BLOB column?

PHP를 사용하여 MySQL 데이터베이스에 BLOB 삽입: 이미지 저장소 문제 해결

MySQL 데이터베이스 내에 이미지를 저장하려고 하면 문제가 발생할 수 있습니다. 제공된 쿼리가 데이터를 올바르게 저장하지 못하는 경우. 문제를 자세히 살펴보고 잠재적인 해결책을 살펴보겠습니다.

문제:

ImageId(정수) 및 Image(longblob) 열이 있는 제공된 테이블 구조에서 다음 쿼리는 활용되었습니다:

$sql = "INSERT INTO ImageStore(ImageId,Image)               
VALUES('$this->image_id','file_get_contents($tmp_image)')";
로그인 후 복사

예상한 결과를 얻었음에도 불구하고 file_get_contents($tmp_image) 값을 인쇄할 때 데이터가 데이터베이스에 저장되지 않습니다.

해결책:

해결책 1: 변수 보간

귀하가 구성한 쿼리는 일반적인 PHP 함정에 취약합니다. 큰따옴표로 묶인 문자열 내에 변수 file_get_contents($tmp_image)를 포함하면 PHP는 자동으로 함수를 실행하지 않습니다. 대신 이를 리터럴 문자열로 처리하므로 반환된 값이 아닌 "file_get_contents($tmp_image)"를 데이터베이스에 기록합니다.

file_get_contents($tmp_image)의 결과를 올바르게 연결하려면 다음을 수행해야 합니다. 큰따옴표로 묶인 문자열 종료:

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
로그인 후 복사

해결책 2: 삭제

바이너리 데이터에 작은따옴표(')가 포함되어 있으면 쿼리가 무효화됩니다. 이를 방지하려면 데이터를 삽입하기 전에 mysql_escape_string을 사용하여 데이터를 삭제하세요.

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
로그인 후 복사

해결책 3: 대체 저장소

관계형 데이터베이스에 대용량 바이너리 데이터(BLOB)를 저장하면 다음과 같은 이점이 있습니다. 비효율적이다. 바이너리 데이터 관리를 위해 설계된 별도의 파일이나 클라우드 스토리지 서비스와 같은 대체 스토리지 옵션을 고려해보세요.

위 내용은 내 PHP 코드가 MySQL BLOB 열에 이미지를 삽입하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿