PHP를 사용하여 MySQL 데이터베이스에 이미지 업로드
PHP를 사용하여 MySQL 데이터베이스에 이미지를 삽입하려면 여러 단계가 필요합니다. 제공하신 코드의 문제를 해결해 보겠습니다.
1. 데이터베이스 테이블 구조:
이미지 데이터를 저장하려면 데이터베이스 테이블에 BLOB 또는 MEDIUMBLOB 유형으로 정의된 열이 있는지 확인하세요.
2. 준비된 문:
더 이상 사용되지 않는 mysql_query() 함수를 사용하는 대신 PDO 또는 MySQLi를 사용하여 준비된 문으로 전환하세요. 준비된 문장으로 SQL 주입 취약점을 방지합니다.
3. 적절한 이미지 처리:
현재 코드는 임시 파일에서 직접 이미지 데이터를 검색합니다. 이는 보안상 위험합니다. 대신 FILE_BINARY 옵션과 함께 file_get_contents()를 사용하여 바이너리 내용이 제대로 처리되는지 확인하세요.
4. 삭제:
SQL 삽입을 방지하려면 addlashes() 또는 mysqli_real_escape_string()을 사용하여 이미지 데이터를 삭제하세요.
5. 올바른 삽입 쿼리:
삽입 쿼리는 테이블 구조와 일치해야 하며 이에 따라 데이터를 삭제해야 합니다. 수정된 버전은 다음과 같습니다.
$stmt = $mysqli->prepare("INSERT INTO product_images (id, image, image_name) VALUES (?, ?, ?)"); $stmt->bind_param("sis", 1, $image, $image_name); $image = file_get_contents($_FILES['image']['tmp_name'], FILE_BINARY); $image_name = addslashes($_FILES['image']['name']); if ($stmt->execute()) { echo "Image uploaded successfully"; } else { echo "Error: " . $mysqli->error; }
6. HTML 양식:
HTML 양식은 요청 시 바이너리 데이터 전송을 허용하는 enctype="multipart/form-data" 속성을 사용해야 합니다. 또한