같은 서버에 다행히 PHP도 설치가 되어있어서, 서버 구성에 손대지 않고 API를 이 참에 다 갈아엎고자 PHP로 작업을 진행하고 있습니다.
보통 mysql(maria db)과 많이 사용하여서 Mssql과 연동하는 작업은 전무했던터라 자주사용하는 소스를 공유드리고자 합니다.
1. DB 접속정보를 갖고 있는 config.php
config.php를 생성하여 상수로 자주 사용할 정보들을 define 해줍니다.
<?php
// IP는 예시이므로 사용하실 IP로 변경해주세요
// DB 주소 (메인 DB와 테스트 DB를 사용)
define('DB_MAIN','192.100.100.111');
define('DB_TEST','192.100.100.112');
// 데이터베이스 이름
define('DB_EMPL','사원관리DB');
define('DB_SALARY','급여관리DB');
// DB 접속 정보
define('DB_ID_ADMIN','id_admin');
define('DB_PW_ADMIN','pw_admin');
// 인코딩
define('DB_CHARACTERSET','UTF-8');
?>
2. config.php를 include 해주고 같은 경로에 select.php 라는 예제 파일을 아래와 같이 작성해보겠습니다.
각 코드별로 주석을 기재하였으나 어려우신 분들은 언제든 댓글 달아주세요 :)
<?php
header('Content-Type: text/html; charset=utf-8');
// 테스트할 때 모든 에러를 출력해주는게 좋습니다.
error_reporting( E_ALL );
ini_set( "display_errors", 1 );
// DB 연결과 관련한 상수에 대한 값을 불러와줍니다.
// 예를들어 select.php, update.php 등의 CRUD 작업페이지가 여러개라 할 때, DB의 접속 정보가 변경된 상황이 발생할 경우
// Config.php만 변경해주면 됩니다.
include 'config.php';
?>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
// 연결할 MSSQL 서버에 대한 정보를 입력해줍니다.
$serverName = DB_TEST;
$connectionOptions = array(
"database" => DB_EMPL, // 데이터베이스명
"uid" => DB_ID_ADMIN, // 유저 아이디
"pwd" => DB_PW_ADMIN, // 유저 비번
"CharacterSet" => DB_CHARACTERSET // 한글꺠짐 방지!
);
// --------------------------------------------------------------------
// SQL 조건문에 변수를 넣을 경우 활용 하는 방법
// 1) 변수에 그대로 값 대입
$F_EMPL_CODE = '사번';
$F_START_DATE = '날짜';
// 2) URL에 입력된 변수를 불러올 경우
// 테스트는 GET / API 호출은 POST 사용
// ex) http://localhost/select.php?EMPL_CODE=사번&START_DATE=데이타
$F_EMPL_CODE = $_GET['F_EMPL_CODE'];
$F_START_DATE = $_GET['F_START_DATE'];
// --------------------------------------------------------------------
// 결과값을 받을 변수
$F_START_TIME = '';
// DB 연결
$dbconn = sqlsrv_connect($serverName, $connectionOptions);
// 연결 확인
if ($dbconn) {
echo "DB 연결 완료<br><hr>";
}else{
echo "DB 연결 실패<Br>";
die( print_r( sqlsrv_errors(), true));
echo "<hr>";
}
// 쿼리 작성
$query = "SELECT * FROM 출근기록테이블
WHERE 사번 = '$F_EMPL_CODE' and 날짜 = '$F_START_DATE'";
// 쿼리를 실행하여 statement 를 얻어온다
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query($dbconn, $query, $params, $options );
// 쿼리 결과 'row' 수를 반환해준다
$row_count = sqlsrv_num_rows($stmt);
// 결과가 1개 이상 있다면?
if($row_count >= 1){
// statement 를 돌면서 필드값을 가져온다
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
// 출력할 $row['컬럼명']; 형태로 출력해줌
$F_START_TIME = (string) $row['근무시간'];
echo $F_START_TIME."<Br>";
}
}else{
echo "조회된 정보가 없습니다";
}
// 데이터 출력후 statement 를 해제한다
sqlsrv_free_stmt($stmt);
// 데이터베이스 접속을 해제한다
sqlsrv_close($dbconn);
?>
</body>
</html>