문제

PHP를 사용하여 .pdf 파일을 MySQL 데이터베이스에 업로드하려고합니다.

파일의 내용을 제외하고는 모두 좋습니다. 내가 특수 캐릭터를 탈출하려고하는 것처럼 보이면 쿼리는 항상 "알 수없는 명령 n"과 함께 실패합니다.

AddSlashes, mysql_real_escape_string, RemoveSlashes 등을 사용했습니다.

파일 내용을 피하는 방법에 대한 아이디어가 있습니까?

많은 감사,

도움이 되었습니까?

해결책

이전에 다음 시퀀스를 사용했는데,이 순서는 잘 작동하는 것처럼 보이며 이미지, PDF, 데이터 배열 등을 포함하여 DB에 데이터를 저장합니다 ... :)

데이터 저장 (문자열, 배열, 객체 등이 될 수 있음);

먼저 데이터를 Base64 인코딩 된 문자열로 전환합니다.

$strData = strtr(
             base64_encode(
               addslashes(
                 gzcompress( serialize($dataToStore) , 9)
                 )
               ) , '+/=', '-_,');

그런 다음 해당 문자열 데이터를 DB에 저장하십시오 ...


데이터 검색;

DB에서 문자열 데이터를 추출하십시오

데이터를 원하는 것으로 다시 디코딩합니다 (입력 데이터, 배열, 이미지 등에 따라 추가 단계를 수행해야 할 수도 있습니다).

$returnData = unserialize(
                gzuncompress(
                  stripslashes(
                    base64_decode(
                      strtr($strDataFromDb, '-_,', '+/=')
                    )
                  )
                )
              );

이것은 확실히 MySQL DB에 저장하는 데 필요한 것을 저장하는 데 도움이되었습니다!

다른 팁

왜 파일을 데이터베이스에 저장하고 싶은지 모르겠지만 살펴 보는 것이 좋습니다. 준비된 진술.

추측 : 문자 세트 사이의 비 호환성으로 인해 오류가 발생할 수 있습니다. PDF는 아마도 이진 파일 일 수 있으므로 DB 열이이를 처리하도록 설정되어 있는지 확인해야합니다.

이스케이프 문제 외에 (MySQL) 시스템 변수 인 경우 "패킷 너무 큰"오류가 발생할 수 있습니다. max_allowed_packet "작은"값으로 설정됩니다.
MySQLI 확장, 준비된 진술 및 mysqli_stmt :: send_long_data 두 가지 문제를 피할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top