HOT Nmail PHP 3 업그레이드 할인
자세히 보기

Nbuilder PHP Q&A

리눅스 또는 유닉스에 php를 구성하고 mssql과도 연동이 가능한가요?

궁*이 2003.07.07 16:17 조회 956

이곳에서 만들어진 빌더제품을 보고서 공부중인 사람입니다.

이곳에서 많은 도움을 받고 있습니다. 감사하게 생각하고 있고요~

근데 문제점이 발생해서 이렇게 문의를 드립니다.

빌더를 사용시 mssql과도 연동이 가능한가요 mysql로 테스트 해본결과 잘돌아갑니다.

근데 mssql과동 연동이 될수있는지 궁금해서 글을 올립니다.

유닉스에서 테스트중입니다.

mssql을 사용하려면 asp(윈도우) 버젼을 사용해야 하나요 궁금합니다.

혹 유닉스에서 가능하다면 이런식으로 하는것이 맞는지요

<?php
// 중복 include 방지
if ( defined("_INCLUDED_MSSQL") ) return;
define("_INCLUDED_MSSQL", "1");

putenv("SYBASE=/usr/local/freetds");

class MSSQL {
var $conn = FALSE; // connection
var $stmt = 0; // query statement
var $rowno = -1; // row number(fetch시 1씩 증가함.)
var $debugip; // query error시 error 내용을 보여줄 IP
var $host; // DB host
var $db; // DB name
var $user; // DB user
var $password; // DB password

function config()
{
global $PAGE_ROOT, $F_DB;

echo $PAGE_ROOT . "<p>";
echo $F_DB;

if (!$this->host)
{
if ( file_exists($F_DB) ) $db_cfg = file($F_DB);
$this->host = trim($db_cfg[1]);
$this->db = trim($db_cfg[2]);
$this->user = trim($db_cfg[3]);
$this->password = trim($db_cfg[4]);
$this->debugip = trim($db_cfg[5]);
}
if (!$this->debugip) $this->debugip = ".";
}


function connect() {
if (!$this->conn) // 중복연결 방지
{
$this->config();
$this->conn = mssql_connect($this->host, $this->user, $this->password) or die ("DB에 연결할 수 없습니다.");
mssql_select_db($this->db, $this->conn) or die ("DB(" . $this->db . ")가 존재하지 않거나, 접근 권한이 없습니다.");
}
}

function parseExec($qry) {
$this->stmt = mssql_query($qry, $this->conn);
if (!$this->stmt)
{
global $HTTP_SERVER_VARS;
global $PATH_TRANSLATED;

$this->config();

$isDebug = FALSE;

$sp = explode(",", $this->debugip);
for ($i=0; $i<sizeof($sp); $i++)
{
if ( ereg(trim($sp[$i]), $HTTP_SERVER_VARS["REMOTE_ADDR"]) )
{
$isDebug = TRUE;
break;
} // if()
} // for()

if ($isDebug)
{
echo "<hr>현재 오류메세지는 [" . $this->debugip . "]에서 접근한 사용자에게만 보여집니다.<br><br>[class] ". __FILE__ . "<br>[excute] $PATH_TRANSLATED<hr><FONT SIZE=2 COLOR=RED>질의가 실패하였습니다.<br><br>" . $qry . "<br><br></FONT><hr>";
}
else
{
echo "<FONT SIZE=2 COLOR=RED>데이타베이스 오류입니다. 관리자에게 문의하여 주십시오.</FONT>";
} // if()

$this->disconnect();
exit;
}
$this->rowno = -1; // query시마다 초기화시킴.
}

function fetch() {
$this->rowno++;
return TRUE;
}

function result($i) { // 인덱스는 0이 아닌 1부터 시작함.
return mssql_result($this->stmt, $this->rowno, $i-1); // 페치된 열의 컬럼 값을 리턴한다
}

function fetchInto(&$fields,$mode=MSSQL_BOTH) {
$fields = "";
$fields = mssql_fetch_array($this->stmt, $mode);
return $fields; // 결과 배열(result-array)에 다음 열을 페치한다
}

function fetchStatement(&$fields,$mode=MSSQL_ASSOC) {
$i=0;
$fields = "";
while ($fields_tmp = mssql_fetch_array($this->stmt, $mode)) // 배열에 모든 열의 결과 값을 페치한다.
{
while (list ($key, $val) = each ($fields_tmp))
{
$fields[$key][$i] = $val;
}
$i++;
}
if ( !$fields ) $fields = $fields_tmp; // 검색된 결과가 없을경우 null값 반환 ( sizeof() 사용시 정확한 갯수 반환 )
return $fields;
}

function rowCount() {
return mssql_num_rows($this->stmt); // $db->parseExec() 사용직후 결과수를 얻어낼 수 있음
}


function numFields(&$num) {
$num = mssql_num_fields($this->stmt);
return $num;
}


function lenFields(&$len, $field_offset) {
$len = mssql_field_seek($this->stmt, $field_offset);
return $len;
}


function parseFree() {
mssql_free_result($this->stmt); // 구문(statement)에 연관된 모든 자원을 해제한다.
}

function insertId()
{
$this->parseExec("select last_insert_id()");
$this->fetch();
$id = $this->result(1);
$this->parseFree();
return $id;
}

function disconnect() {
if (!$this->conn) mssql_close($db[connect]);
}

function getStmt()
{
return $this->stmt;
}

} // end class

//////// Object 생성 ////////////////////////////////
$db = new MSSQL;
////////////////////////////////////////////////////

?>

이런식으로 하면 연결이 될것도 같은데 전혀 연결이 이루어지지 않네요 부탁좀 부탁 드리겠습니다.



댓글 1
이전 글 외부 메일 읽기 등록에 관하여... 1 전*재 2005.07.19
다음 글 nbuilder 1 김*진 2003.07.05