프로그래밍2009.12.17 14:02
http://php.net/manual/fr/function.serialize.php

php에서 객체를 문자열로 변환해서 DB에 저장할 때가 있다. 이때 주의할 점..
반환 값이 

Returns a string containing a byte-stream representation of value that can be stored anywhere.
바이트 스트림이기 때문에 일반적인 문자열로 생각할 경우 곤란할 경우가 생긴다.

If you are serializing an object with private variables, beware. The serialize() function returns a string with null (\x00) characters embedded within it, which you have to escape. Not great if you're trying to save objects into a DB...
위의 글과 마찬가지로 private 변수를 사용할 경우
null 값이 들어가기 때문에 자칫 c나 php 함수를 사용해서 db에 저장하는 경우 중간에 끊기는 경우가 발생할 수 있다.
가장 쉬운 방법은 blob(bytea) 형태로 넣는 것이다.


dbms에서 만약에 만약에 .. blob 형태를 지원하지 않는다고 할 땐..............
base64_encode()를 사용해서 들어갈 수 있도록 바꾸고 하면 됨. 끝.




Posted by 시난
TAG php, Serialize

댓글을 달아 주세요

  1. 그렇군요! 명심하겠습니다.

    2009.12.17 16:16 [ ADDR : EDIT/ DEL : REPLY ]
  2. 미투데이 위젯 너무 감사해요~
    잘쓰고 있어요 ㅎㅎ 정말 이름없는 천사십니다!

    2010.12.23 11:50 [ ADDR : EDIT/ DEL : REPLY ]
  3. 일부러 노리다뇨~
    그렇지 않아요. ㅎㅎ
    저 아름다운 바닷 속에서 물고기 떼와 놀았더랬죠.

    2011.08.20 05:47 [ ADDR : EDIT/ DEL : REPLY ]
  4. Coach Outlet Store Online

    2011.08.28 10:29 [ ADDR : EDIT/ DEL : REPLY ]

프로그래밍2009.04.30 11:06
읔-
이럴수가.. 문제는 그누보드4의 sql 문법이 덜 엄격(?)해서 그런 것이었다. (MySQL 5.1에서 허용하지 않는..)

해결방법을 여기에서 찾았다.
http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=106306&sca=&sfl=wr_subject%7C%7Cwr_content&stx=mysql+5.0&sop=and&spt=-28695

해결방법을 요약하면 그누보드 설치 전에
MySQL의 설정파일을 다음과 같이 수정하고

윈도우즈의 예)
C:\Program Files\MySQL\MySQL Server 5.1\my.ini 파일 수정

86줄을 다음과 같이 수정한다. (STRICT_TRANS_TAB를 뺀다.)
# Set the SQL mode to strict
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"


그 다음 MySQL 서비스를 재시작하고
설치를 진행하면 해결된다.

(혹 설치를 했다면
그누보드폴더에 있는 install.bak 폴더를 install로 바꾸고,
dbconfig.php 파일을 지우고 설치를 진행하면 된다.)





Posted by 시난

댓글을 달아 주세요