sql_connect 문자셋 설정구문 수정 정보
sql_connect 문자셋 설정구문 수정본문
lib/common.lib.php 의 1042라인을 아래와 같이 수정해야 할꺼 같습니다.
기존 소스의 @mysql_query에서 @이를 없애고 실행했을때 localhost.ODBC 연결오류 메세지가 출력됩니다.
DB connect 이전에 문자셋 설정쿼리 실행으로 불필요 리소스가 발생합니다.
~최대한 자원을 아껴야죠^^
// DB 연결
function sql_connect($host, $user, $pass)
{
return @mysql_connect($host, $user, $pass);
}
추천
0
0
댓글 6개
utf-8에서 문제가 생깁니다.
안녕하세요. 답변주셨네요^^
반론을 드리자면,,,,,ㅋ
단순히 위처럼 소스를 수정한다고해서 utf-8에서 문제가 발생하진 않습니다.
왜냐면, sql_connect 아래의 sql_select_db에서 문자셋을 설정하기 때문이죠,
오히려 기존 소스에서 문제가 발생하고 있으나 @의 사용으로 메세지가 출력되질 않고 있을 뿐입니다.
참고하세요^^
// DB 선택
function sql_select_db($db, $connect)
{
global $g4;
if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 ");
else if (strtolower($g4['charset']) == 'euc-kr') @mysql_query(" set names euckr ");
return @mysql_select_db($db, $connect);
}
반론을 드리자면,,,,,ㅋ
단순히 위처럼 소스를 수정한다고해서 utf-8에서 문제가 발생하진 않습니다.
왜냐면, sql_connect 아래의 sql_select_db에서 문자셋을 설정하기 때문이죠,
오히려 기존 소스에서 문제가 발생하고 있으나 @의 사용으로 메세지가 출력되질 않고 있을 뿐입니다.
참고하세요^^
// DB 선택
function sql_select_db($db, $connect)
{
global $g4;
if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 ");
else if (strtolower($g4['charset']) == 'euc-kr') @mysql_query(" set names euckr ");
return @mysql_select_db($db, $connect);
}
저는 utf-8을 안써서 모르겠는데,
불댕팩에서 수정을 했더니 utf-8 쓰시는 분들이 글자가 깨진다고 하더라구요.
utf-8에서 테스트 가능하시면,
처음 connect 할때는 set names utf8을 하지 않고
select할 때, 먼저 select를 하고 다음에 set names를 하게 테스트 해봐 주실래요?
http://www.xpressengine.com/?mid=tip&search_target=tag&search_keyword=%ED%8F%AC%ED%83%88&document_srl=16381475
불댕팩에서 수정을 했더니 utf-8 쓰시는 분들이 글자가 깨진다고 하더라구요.
utf-8에서 테스트 가능하시면,
처음 connect 할때는 set names utf8을 하지 않고
select할 때, 먼저 select를 하고 다음에 set names를 하게 테스트 해봐 주실래요?
http://www.xpressengine.com/?mid=tip&search_target=tag&search_keyword=%ED%8F%AC%ED%83%88&document_srl=16381475
현재 그누보드 기준으로 common.php 171라인을 보시면
$connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);
$select_db = sql_select_db($mysql_db, $connect_db);
으로 되어있습니다.
즉, 위 처럼 sql_connect를 적용했을 경우 정리하자면
아래 순서대로 명령어가 실행됩니다.
제로보드는 2, 3번 순서가 바껴 실행되고 있고요^^;
1. mysql_connect
2. mysql_query(" set names XXX ")
3. mysql_select_db
4. 일반 쿼리 실행(mysql_query)
그리고^^ 현재 제가 운영하고 있는 사이트가 UTF-8입니다.
물론 아무 문제없이 돌아가고 있습니다.ㅎ
$connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);
$select_db = sql_select_db($mysql_db, $connect_db);
으로 되어있습니다.
즉, 위 처럼 sql_connect를 적용했을 경우 정리하자면
아래 순서대로 명령어가 실행됩니다.
제로보드는 2, 3번 순서가 바껴 실행되고 있고요^^;
1. mysql_connect
2. mysql_query(" set names XXX ")
3. mysql_select_db
4. 일반 쿼리 실행(mysql_query)
그리고^^ 현재 제가 운영하고 있는 사이트가 UTF-8입니다.
물론 아무 문제없이 돌아가고 있습니다.ㅎ
음...그런데 왜 안된다고 할까요??? ㅠ..ㅠ...
당연히 connect전에 query문은 오류입니다.
정확하게는 mysql_select_db() 다음에 해 주어야 합니다.
정확하게는 mysql_select_db() 다음에 해 주어야 합니다.