이 오류에 대한 다른 모든 질문은이 경우가 아닌 이스케이프해야하는 예약어와 관련되어 있으므로이 질문은 중복되는 질문이 아닙니다.Mysql LongBlob 구문 오류 또는 액세스 위반
내가 문자열의 연결 플러스 file_get_contents을 사용하여 파일 내용입니다 일반 쿼리를 가지고 쿼리는 다음과 같이 표시됩니다
는CALL sp_student_booking_application_attachment_insert(
'foreignkey code', -- varchar(255)
'filename.pdf', -- varchar(255)
'application/pdf', -- varchar(255)
file content, -- longblob: not quoted
file_size -- integer(11): not quoted
);
가게 절차는 INSERT 문 단지 래퍼 인 똑같은데.
동일한 작은 파일을 업로드하면 10kb가 작동하지만 더 큰 다른 파일에서는 작동하지 않지만 200kb의 PDF를 업로드 할 수있었습니다. 특정 PDF 만 적어 두십시오. 더 작아도 다른 pdf를 사용하면 작동하지 않습니다. 내가 할 수있는 유일한 오류는 다음과 같습니다
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?s(??\n??W?hcvӔ???.???a&??5+\"+w?? c??-?ƄqܷL,???-L?b?|)??K?71' at line 5
그래서 내가 ''와``사용하여,하지만 난 여전히 같은 문제가 발생하여 파일 내용 값을 인용했습니다. 그러나 내가 phroughyadmin 파일을 업로드하려고 할 때 2MB의 파일도 업로드합니다.
이 이미지/파일이 json 변수의 비누 서비스를 통해 이동하고 파일 내용이 base64로 인코딩 된 다음 비누 서버에서 json으로 구문 분석되고 base64가 디코딩되는 것이 유용 할 수 있습니다. 내가 확인한 파일은 양면에 비누 클라이언트/비누 서버와 같은 크기이므로 PHP 나 비누 관련 문제가 아닙니다. my.conf의의 max_allowed_packet에
은/탈출 쿼리에 삽입하는 데이터를 마스킹하기 위해 적절한 조치를 적용하지 않았다처럼 996776960.
쿼리에 삽입하는 데이터를 이스케이프/마스크하기위한 적절한 방법을 적용하지 않은 것처럼 보입니다 ... 실제로 그렇게하는 방법을 보여줍니다. (당신이 완전히 처리하지 않았다고 가정하면 파일 내용을 SQL 문으로 연결하면됩니다.) – CBroe
예를 들어 여기에 설명 된 기본 이스케이프 처리 http://stackoverflow.com/a/7052685/1427878 물론 당신이해야 할 절대적인 최소 ... 당신은? – CBroe
@CBroe 저는 여러분이 말한 것을 보았습니다. 기본적으로 원시 쿼리는 문자열의 연결입니다. " '".addslashes ($ filecontent)와 같은 것을 사용하고있었습니다. "', 그렇지 않았습니다. 충분히, 그래서 그 원시, pdo 준비 성명을 대체하려고 노력하고 그것은 작동합니다.그래서 만약 당신이 대답을 게시하면 나는 당신에게 200을 줄 것입니다 : – peterpeterson