라이믹스 개발팁

|

공돌이가 라이믹스를 개발하면서 겪은 여러 팁들을 적어 놓은 공간입니다.
XE/라이믹스에 궁금한 사항들이나 개인적인 요청건이 있으시면 nckres14@gmail.com 으로 메일 보내주시면 친절하게 답변해드립니다.

라이믹스(빈스팀) DB Mysql 쿼리문 작성

공돌이 | 조회: 59 | 추천: 0 | 2019.03.18 16:14 https://binsteam.com/rhymix/771

라이믹스 내부에는 기본으로 제공하는 쿼리, DB 정의 문법이 있는데 

 

이것이 만드는 데 시간걸리고 확장성에도 제한이 있을 뿐더러 

 

쿼리문 날릴때도 귀찮아서 빈스팀에는 편리하게(Mysql 종속적) sql 을 날리도록 했습니다.

 

[코드]..

 

	static private $oDB;

	/**
	 * ==========
	 * DB
	 * ==========
	 */

	static public function &getDBInstance()
	{
		if(self::$oDB) {
			return self::$oDB;
		}
		
		$oDB = DB::getInstance();
		if(strncasecmp($oDB->db_type, 'mysql', 5) !== 0) {
			// return null;
			exit('DB를 확인해 주세요!');
		}

		self::$oDB = $oDB;
		unset($oDB);

		return self::$oDB;
	}

	static public function _DBQuery($strSQL, $oDB = null)
	{
		if(!$oDB) {
			$oDB = self::getDBInstance();
		}

		$oDB->_query($strSQL);
	}

	static public function _DBQueryFetch($strSQL, $result_type = null, $oDB = null)
	{
		$oDB = self::getDBInstance();
		$res = $oDB->_query($strSQL);
		return $oDB->_fetch($res, $result_type);
	}

	static public function _DBQuotes($data)
	{
		$oDB = self::getDBInstance();
		return $oDB->addQuotes($data);
	}

	static public function _DBIsError()
	{
		$oDB = self::getDBInstance();
		return $oDB->isError();
	}

	static public function _DBAffectedRows()
	{
		$oDB = self::getDBInstance();
		return $oDB->getAffectedRows();
	}

	static public function _DBInsertID()
	{
		$oDB = self::getDBInstance();
		return $oDB->getInsertID();
	}


	/**
	 * ==========
	 * DB 사용 틀 설정
	 * ==========
	 */

	/**
	 * @return [
	 * 		'column1' => $value1,
	 * 		'column2' => $value2,
	 * 	]
	 */
	static public function db_column_setdata_quotes($columnData)
	{
		foreach($columnData as $column => $value)
		{
			if(is_null($value)) continue;

			$q = ' '.$column;

			if(is_numeric($value))
			{
				$q .= ' = '.$value;
			}
			else if(is_array($value))
			{
				$q .= ' in (';

				$in = [];
				foreach($value as $val)
				{
					$in[] = '\''.self::_DBQuotes($val).'\'';
				}

				$q .= join(',', $in);
				$q .= ')';
			}
			else
			{
				$q .= ' = \''. self::_DBQuotes($value) .'\'';
			}

			$columnUpdate[$column] = $q;
		}

		return $columnUpdate;
	}
	
	static public function db_quotes($string)
	{
		return self::_DBQuotes($string);
	}

	static public function db_query($sql)
	{
		$query = self::_DBQuery($sql);
		if(self::_DBIsError())
		{
			return self::dgp('DB 에러', $sql);
		}

		return $query;
	}

	static public function db_query_get($sql)
	{
		$result = self::_DBQueryFetch($sql);

		if(count($result)>1)
		{
			return $result[0];
		}
		else
		{
			return $result;
		}
	}

	static public function db_query_gets($sql)
	{
		return self::_DBQueryFetch($sql, 0);
	}

	static public function db_affected_rows()
	{
		return self::_DBAffectedRows();
	}

	static public function db_insert_id()
	{
		return self::_DBInsertID();
	}

	static public function db_duplicate_insert($table, $columnData, $columnNotUpdate = [])
	{
		$data = self::db_column_setdata_quotes($columnData);

		$strSQL = 'insert into '.$table;
		$strSQL .= ' set '.join(',', $data);

		// 업데이트 안하는 컬럼
		foreach($columnNotUpdate as $column) {
			unset($data[$column]);
		}

		$strSQL .= ' on duplicate key update '.join(',', $data);

		return self::db_query($strSQL);
	}

 

STEAM

스팀계정
pp2nguin
레벨
23
게임 수
64

최근 플레이한 게임   0.3시간

댓글 0

1
사이드 준비중... :D
서버에 요청 중입니다. 잠시만 기다려 주십시오...