2010-02-13 6 views
1

이미지 URL을 MySQL 데이터베이스 테이블에 저장하려고합니다.데이터베이스 테이블에 이미지 URL 저장

열 필드가 충분히 길습니다.

http://example.com/media/images/47142000/jpg/_47142379_005857853-1.jpg

하지만이 같은 구원을 얻을 : 테이블 및 데이터베이스는 UTF-8 CI-일반 조합 (IIRC)

URL이 다음과 같이 보일 사용하는

http://example.com/media/images/47142000/jpg을 ..

'_'의 외관이 mySQL 문제를 일으키는 것으로 보입니다. 데이터베이스에 저장하기 전에 문자열을 urlencode (또는 문자열에 다른 일부 데이터를 munging)해야합니까?

+0

그냥 잘린 출력입니까? 당신은 짧은 URL을'_'로 저장하려 했습니까? 아니면 이것을 테스트하기 위해 밑줄이없는 긴 URL을 저장 했습니까? – akf

+0

URL을 보유하는 열의 데이터 유형은 무엇입니까? – artlung

+0

"show create table YOURTABLENAME"의 출력을 게시 할 수 있습니까? –

답변

1

문자열 내에서 NO_BACKSLASH_ESCAPES SQL 모드가 활성화되어 있지 않으면 특정 시퀀스가 ​​특별한 의미를 갖습니다. 이러한 각 시퀀스는 이스케이프 문자로 알려진 백 슬래시 ("\")로 시작합니다. MySQL은 다음과 같은 이스케이프 시퀀스를 인식합니다.

\ 0 ASCII NUL (0x00) 문자. \ '작은 따옴표 ("'") 문자. \ "큰 따옴표 (" ") 문자. \ b 백 스페이스 문자입니다. \ n 개행 (라인 피드) 문자. 캐리지 리턴 문자입니다. \ t 탭 문자. \ Z ASCII 26 (Control-Z). 표 다음의 주를보십시오. \ 백 슬래시 ("\") 문자. \ % A "%"문자. 표 다음의 주를보십시오. _ "_"문자. 표 다음의 주를보십시오.

_ 문자를 이스케이프 처리해야합니다.

자세한 내용은 http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html을 참조하십시오.

+0

감사합니다. Todd. 유용한 링크. 데이터가 mySQL 데이터베이스에 올바르게 저장되었지만 phpMySQL을 사용하는 뷰 (phpMySQL 버그 일 가능성이 있음)가 '잘못 표시'되었습니다. BTW, 나는 Propel ORM을 사용하고 있기 때문에 문자열 리터럴의 많은 부분이 나를 위해 장면 뒤에서 처리됩니다. 데이터를 볼 때 나는 놀랐습니다. 하지만 mysql 콘솔 앱을 통해 데이터를 직접 확인하기 때문에 데이터가 올바르게 저장됩니다. –

+0

PHPMyAdmin을 사용한다는 의미 인 경우 결과를 탐색 할 때 모든 숫자가 아닌 필드가 특정 길이로 잘립니다. 길이는 config.inc.php의 $ cfg [ 'LimitChars']에 의해 제어됩니다. PHPMyAdmin 설치를 제어 할 수있는 권한이 없으면 결과를 탐색 할 때 항상 "옵션"링크를 클릭하고 "전체 텍스트 표시"옵션을 선택하면 모든 필드의 모든 텍스트가 표시됩니다. 이게 도움이 되길 바란다. –