Nbuilder PHP Q&A
리눅스 또는 유닉스에 php를 구성하고 mssql과도 연동이 가능한가요?
이곳에서 만들어진 빌더제품을 보고서 공부중인 사람입니다.
이곳에서 많은 도움을 받고 있습니다. 감사하게 생각하고 있고요~
근데 문제점이 발생해서 이렇게 문의를 드립니다.
빌더를 사용시 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 | 전*재 | 2005.07.19 |
---|---|---|---|
다음 글 | nbuilder 1 | 김*진 | 2003.07.05 |