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 중국어 웹사이트의 기타 관련 기사를 참조하세요!