PHP에서 mssql 사용하기 ///그누보드 외부 mssql 사용 //리눅스서버에서 mssql 사용하기//Freetds > 그누보드5 팁자료실

그누보드5 팁자료실

PHP에서 mssql 사용하기 ///그누보드 외부 mssql 사용 //리눅스서버에서 mssql 사용하기//Freetds 정보

PHP에서 mssql 사용하기 ///그누보드 외부 mssql 사용 //리눅스서버에서 mssql 사용하기//Freetds

첨부파일

mssql.php (1.5K) 22회 다운로드 2019-11-28 17:39:09

본문

PHP에서 mssql 사용하기 ///그누보드 외부 mssql 사용  // 리눅스서버에서 mssql 사용하기 // Freetds 




안녕하세요 개발자 korean leo 입니다.

제가 마주친 mssql 외부 db 연결 해결 과정에 대해서 써보겠습니다.

(코드 파일에 담아 놓았습니다.)

 

 

작업을하다가​ 외부 데이터 베이스를 연결해달서 데이터 정보를 연결해달라는 주문을 받게되었다.

굉장히 난감했지만 db연결이 거기서 거기겠거니 하면서 시도하였다. (굉장히 큰 착각이였음..)

 

첫번째 : 내가 사용하는 서버는 리눅스 서버인데  연결해달라는 db는 mssql....
mssql이라함은 Micro Soft가 만들었기 때문에 winsdows에서 사용이가능한 db이다. 원래는 리눅스 서버에서 사용이 불가능 했었다.

 

해결 :Freetds의 사용,  Freetds는 리눅스 서버에서 사용불가능한 mssql을 사용하게 연동해주는 역할을 합니다.

freetds 참고 사이트 : https://xinet.kr/?p=1060

 

 

두번째:나에게 주어진 서버는 호스팅 서버였다. free tds 사용을 하기 위해서는 ini 파일에 접근을 해서 하는데 보통 호스팅사에서는 접근을 막아놓는다. phpinfo 에서 
b2b73c6735ed9fef9453f84ef5448108_1574928436_7836.png
 


 

이 기능을 사용할 수 있어야한다.


해결 : 개인서버일 경우 첫번째의 참고 사이트를 따라서 하고 호스팅 서버인 경우 가비아 호스팅사가 기본적으로 제공을 해준다 (닷홈은 안해주는 걸로 알고있음, 저같은 경우에는 가비아사에서 진행했습니다);

호스팅사에 전화를 하셔서 ini파일에 접근을 시도하셔야합니다.

 

 

 

세번째:외부 db에 접근하기 위해서 외부서버의 서버ip와port ,username ,password,dbname을 알아야한다 .

 

해결:외부 db측에 user 하나 생성해달라고 요청해야합니다. 

 

 

 

네번째:mssql 코드를 사용할 줄 알아야한다. 코드와 설명 주의할 점을 넣겠다. 

 

 

해결

<?php

    

    // 그누보드에서 외부 mssql 연결하기 //(PHP에서 mssql 사용하기)

 

    //외부 db접속

     /*mssql 기본포트는 1433 이라고 합니다. 저는 이포트 입력 안해서 안들어가졌었습니다.*/ 

    $server = 'server:port'; //외부 서버 ip 입력  :이후 포트입력  ex )27.0.0.1:1433 

    $username = 'username';  //username 입력 

    $password = 'password';  // password 입력

    $database = 'dbname';    //dbname 입력

    $connection = mssql_connect($server, $username, $password);

 

    //쿼리문작성 예제

    //외부 db를 연결하다보면 컬럼명을 한글로 작성하는 사람들이 종종 있습니다

    //인코딩 문제 때문에 한글 입력에 오류가 나기때문에 utf-8을 euc-kr 로 바꾸어줍니다. ICONV()함수사용

 

    //예제 쿼리

    $query = "SELECT ".ICONV("UTF-8","EUC-KR","한글1,").ICONV("UTF-8","EUC-KR","한글2,").ICONV("UTF-8","EUC-KR","한글3,")

    .ICONV("UTF-8","EUC-KR","한글4,").ICONV("UTF-8","EUC-KR","한글5,").ICONV("UTF-8","EUC-KR","한글6")

    ." FROM j_MPay WHERE ".ICONV("UTF-8","EUC-KR","한글7=").$member[mb_id]."and substring(".ICONV("UTF-8","EUC-KR","한글8").",1,4) = ".$year." ORDER BY ".ICONV("UTF-8","EUC-KR","한글9");

    $result = mssql_query($query);

    $numRows = mssql_num_rows($result); 

 

    //출력의 경우에는 반대로 한글 출력이 안될 수 도 있기때문에 EUC-KR 을 UTF-8로 바꾸어줍니다.

    while($row = mssql_fetch_array($result,0)){

        echo ICONV("EUC-KR","UTF-8",$row[1]); 

        echo ICONV("EUC-KR","UTF-8",$row[2]); 

        echo ICONV("EUC-KR","UTF-8",$row[3]); 

        echo ICONV("EUC-KR","UTF-8",$row[4]); 

        echo ICONV("EUC-KR","UTF-8",$row[5]); 

    }

 

    //외부 db닫아줌

    mssql_close($connection);

?>

 

-mssql의 기본 포트는 1433 이라고 한다. ip 옆에 : port를 꼭 입력하자 본인 같은 경우에는 port를 입력하지 않아 접속을 할 수 없었다.


-mssql_query()함수에 한글이 들어가있는 쿼리문은 접근이 안되었다.그래서 ICONV()함수를 이용하여 인코딩을 바꾸어 접근했다.

 

-mssql_num_rows() 함수에서 결과 값을 받았을때에 한글 깨짐 현상이 발생하여 다시 ICONV()함수를 이용하여 utf-8로 인코딩 해주었다.

 

-row[0],row[1],row[3] ... 순서대로 쿼리문을 불러오게된다.





필자의 경우에는 호스팅사:가비아/그누보드 솔루션 사용 하여 외부 db에 접근하였습니다. 개인 사원 정보를 가져와 사원 정보를 업데이트하는거라 따로 사진은 올릴 수 없지만
작업한 사이트는 http://qldpatl.gabia.io/ 입니다.
 

개인사이트에 포스팅 해놓았습니다 . http://koreanleo.com/bbs/board.php?bo_table=php&wr_id=7

 

추천
1
  • 복사

댓글 2개

© SIRSOFT
현재 페이지 제일 처음으로