<?

class JDB { 
    VAR $HostName = "";                //server
    VAR $UserName = "";                //User ID
    VAR $UserPass = "";                //User Password
    VAR $DBName = "";                //Database Name
    VAR $DBConn="";                    //Database Handler

/*
** Function  : Constructor
** Input     : Database Connection Information
** Output    : None
*/
    function __construct() {

		// Service	
		include getenv("DOCUMENT_ROOT")."/config/config_db.php"; 

		/*
		$DB_HOST = "localhost";
		//$DB_HOST = "www.ebizple.com";
		$DB_NAME = "ifreshy_ccs";
		$DB_USER = "ifreshy_ccs";
		$DB_PASSWORD = "WWHTF72HANDQ";
		*/
		
		$this->HostName=$DB_HOST;
		$this->UserName=$DB_USER;
		$this->UserPass=$DB_PASSWORD;
		$this->DBName=$DB_NAME;
		
		
		$this->CONNECT();

    }

/*
** Function : Connect
** Input    : None
** Output   : None
*/
    function CONNECT() {
        $this->DBConn=mysqli_connect($this->HostName, $this->UserName, $this->UserPass, $this->DBName);
        if (!$this->DBConn)            //연결실패
            $this->errMsg("Database Connection Error !!!", "");
        else                        //연결성공
            if (!(mysqli_select_db($this->DBConn, $this->DBName)))    //Database 선택 실패
                $this->errMsg("Database Select Error !!!", "");
                
        mysqli_query($this->DBConn, "SET NAMES UTF8");
        //mysqli_query($this->DBConn, "SET NAMES latin1");
        //mysqli_query($this->DBConn, "SET NAMES EUC-KR");
    }

/*
** Function  : nQuery
** Input     : Query String, Error Message
** Output    : Recordset
** Descript  : mysql_query()
*/
    function nQuery($query, $msg) {
        if (!($rlt=mysqli_query($this->DBConn, $query))) 
            $this->errMsg($msg, $query);
        return $rlt;
    }

/*
** Function : rQuery
** Input    : Query string, Error message
** Output   : Record
** Descript : mysql_result()
** 이부분은 mysql_fetch_arrary와 비슷하지만 가끔씩 쓰일때가 많아서요..넣었습니다.
*/
		function mysqli_result($res,$row=0,$col=0){ 
		    $numrows = mysqli_num_rows($res); 
		    if ($numrows && $row <= ($numrows-1) && $row >=0){
		        mysqli_data_seek($res,$row);
		        $resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
		        if (isset($resrow[$col])){
		            return $resrow[$col];
		        }
		    }
		    return false;
		}


    function rQuery($query, $msg) {
        if (!($rlt=mysqli_query($this->DBConn, $query))) 
            $this->errMsg($msg, $query);

        return $this->mysqli_result($rlt, 0, 0);
    }

/*
** Function : fQuery
** Input    : Query string, Error message
** Output   : Fetched array 
** Descript : mysql_fetch_array()
** 레코드셋에서 맨 첫번째 레코드를 array로 리턴해줍니다.
** 하나의 레코드셋에서 이함수를 여러번 적용한다면..
** 자동으로 다음 레코드로 넘어가겠죠 ???
*/
    function fQuery($query, $msg) {
        if (!($rlt=mysqli_query($this->DBConn, $query))) $this->errMsg($msg, $query);
        return mysqli_fetch_array($rlt);
    }

/*
** Function : numQuery
** Input    : Query string, Error message
** Output   : The number of rows 
** Descript : mysql_num_rows()
*/
	function numQuery($query, $msg) {
		if(!($rlt=mysqli_query($this->DBConn, $query))) $this->errMsg($msg, $query);
		return mysqli_num_rows($rlt);
	}



/*
** Function : iQuery
** Input    : Table name, arrayed fields, arrayed values
** Output   : None
** Descript : Input arrayed data
*/
    function iQuery($table, $fields, $values) {
        // 초기화 추가 2025-12-10
        $fields_que = "";
        $values_que = "";

        //
        $fields_count=count($fields);    // fileds 배열의 갯수 추출
        $values_count=count($values);    // values 배열의 갯수 추출

        // fields와 values 갯수가 맞지않을 경우 0을 return
        // 혹 프로그래밍 상에서 실수가 발생했을 경우 사용하기 위해
        if($fields_count != $values_count) 
            $this->errMsg("Input Data Error.", "Fields # : $fields_count, Value # : $values_count");

        for ($i=0; $i < $fields_count; $i++) {    // 입력된 fields와 values를 이용 퀴리 생성
            if (0 < $i) {                        // fields와 values가 2개 이상일 경우 , 자동 입력
                $fields_que.=",";
                $values_que.=",";
            }

            $fields_que.=$fields[$i];                        // fields에 해당하는 쿼리
            $values_que.="'".addslashes($values[$i])."'";    // values에 해당하는 쿼리
        }
        $this->nQuery("insert into $table ($fields_que) values ($values_que)", "[ <i>$table</i> ] Table Input Error");
    } 

/*
** Function : uQuery
** Input    : Table name, arrayed fields, arrayed values, where
** Output   : None
** Descript : update arrayed data
*/
    function uQuery($table, $fields, $values, $where="")    {
        // 초기화 추가 2025-12-10
        $sub_que = "";

        //
        if(is_array($fields) & is_array($values)) {                // fields와 values가 배열일 경우
            $fields_count=count($fields);                        // fileds 배열의 갯수 추출
            $values_count=count($values);                        // values 배열의 갯수 추출

            // fields와 values 갯수가 맞지않을 경우 0을 return
            // 혹 프로그래밍 상에서 실수가 발생했을 경우 사용하기 위해
            if ($fields_count != $values_count) 
                $this->errMsg("Input Data Error.", "Fields # : $fields_count, Value # : $values_count");

            for ($i=0; $i < $fields_count; $i++) {
                // insert와 달리 sub쿼리를 이용
                if (0 < $i)
                    $sub_que.=",";
                $sub_que.=$fields[$i]."='".addslashes($values[$i])."'";    // 서브 쿼리 생성
            }
        } 
        else if (!is_array($fields) & !is_array($values))     // fields와 values가 배열이 아닐 경우
            $sub_que=" ".$fields."='".addslashes($values)."' ";
        else 
            $this->errMsg("Input Data Error.", "Fields # : $fields_count, Value # : $values_count");
            
        if($where) $sub_que.=" ".$where;    // where 쿼리가 존재할 경우 입력
        $this->nQuery("update $table set $sub_que", "[ <i>$table</i> ] Table Input Error");
    }

/*
** Function : CLOSE
** Input    : None
** Output   : None
** Descript : mysql_close()
*/
    function CLOSE() {    
        mysqli_close($this->DBConn);    
        $this->DELETE();    
    }

/*
** Function : DELETE
** Input    : None
** Output   : None
** Descript : Member variable unset
*/
    function DELETE() {
        unset($this->DBConn);         unset($this->UserName); 
        unset($this->UserPass);     unset($this->HostName); 
        unset($this->DBName); 
    }

    //Print Error Message and Exit
    function errMsg($msg, $query) {    
        echo("<b>JDB Error Message !!</b><p>");
        $msg=mysqli_errno($this->DBConn)." : ".mysqli_error($this->DBConn)."<p><b>User Message</b> :<br> ".$msg."<p><b>Query String</b> :<br> ".$query;

        echo ("$msg");
        exit;    
    }
    

}

?>