Class
- Tip&Tech
| [ÇÔ¼ö] sqlite ÇÔ¼ö¸¦ Ȱ¿ëÇÑ sqlite Ŭ·¡½º 2Â÷ °³¹ß¿ë | |||||
| ±Û¾´ÀÌ | ³¯ Â¥ | 10-02-08 00:46 | Á¶ ȸ | 4487 | |
|---|---|---|---|---|---|
| °£ÆíURL |
http://www.phpschool.com/link/tipntech/71126
|
||||
| Link1 | http://apmsoftax.mireene.com/test_sqlite.php (414) | ||||
| Link2 | http://apmsoftax.com (369) | ||||
|
sqlite ÇÔ¼ö¸¦ È¿ëÇÑ Å¬·¡½º¸¦
´Ù½Ã ¸¸µé¾ú½À´Ï´Ù ±âÁ¸ÀÇ ÀÎÅÍÆäÀ̽º¸¦ Æ÷ÇÔÇÕ´Ï´Ù À̹ø¿£ DBSqliteResult:: ¿Í DBSqlite:: ¸¦ ¸¸µé¾î¼ Çϳª·Î µ¹¸³´Ï´Ù. <?php /** ====================================================== | @Author : ±èÁ¾°ü | @Email : apmsoft@gmail.com | @HomePage : http://www.apmsoftax.com | @Editor : Eclipse(default) | @UPDATE : 2010-02-04 ----------------------------------------------------------*/ # purpose : °¢Á¾ SQL °ü·Ã µðºñ¸¦ ÅëÀϼºÀÖ°Ô ÀÛ¼ºÇÒ ¼ö ÀÖµµ·Ï ƲÀ» Á¦°ø interface DBSwitch { public function query($query); # Äõ¸® public function insert($table); # ÀúÀå public function update($table,$where); # ¼öÁ¤ public function delete($table,$where); # »èÁ¦ public function addParams($key,$val); # ÀúÀå,¼öÁ¤¿¡ ÇÊ¿äÇÑ µ¥ÀÌŸ ÆÄ¶÷°ª public function bindParams($query,$args=array()); #Äõ¸® ¹®ÀÚ ¹ÙÀεåÈ¿°ú } ?> <?php /** ====================================================== | @Author : ±èÁ¾°ü | @Email : apmsoft@gmail.com | @HomePage : http://www.apmsoftax.com | @Editor : Eclipse(default) | @UPDATE : 2010-02-04 ----------------------------------------------------------*/ # purpose : sqlite ÇÔ¼ö¸¦ Ȱ¿ëÇØ È®ÀåÇÑ´Ù class DBSqliteResult { protected $resultHandle; protected $num_rows; # Äõ¸® ·¹ÄÚµå °¹¼ö # fetch : assoc public function fetch_assoc(){ $args = array(); $args = sqlite_fetch_array($this->resultHandle,SQLITE_ASSOC); return $args; } # fetch : row public function fetch_row(){ $args = array(); $args = sqlite_fetch_array($this->resultHandle,SQLITE_NUM); return $args; } # fetch : array public function fetch_array(){ $args = array(); $args = sqlite_fetch_array($this->resultHandle,SQLITE_BOTH); return $args; } # ÇʵåÀ̸§ °¡Á®¿À±â public function columnName(){ $args = array(); $field_num = sqlite_num_fields($this->resultHandle); for($i=0; $i<$field_num; $i++){ $args[] = sqlite_field_name($this->resultHandle,$i); } return $args; } #Ä®·³°ú ŸÀÔ public function columnTypes($table){ $args = array(); $args = sqlite_fetch_column_types($table,$this->handle,SQLITE_ASSOC); return $args; } } ?> <?php /** ====================================================== | @Author : ±èÁ¾°ü | @Email : apmsoft@gmail.com | @HomePage : http://www.apmsoftax.com | @Editor : Eclipse(default) | @UPDATE : 2010-02-04 ----------------------------------------------------------*/ # purpose : sqlite ÇÔ¼ö¸¦ Ȱ¿ëÇØ È®ÀåÇÑ´Ù class DBSqlite extends DBSqliteResult implements DBSwitch { private $host,$dbname; private $handle; private $affected_rows; # ÀúÀå ·¹ÄÚµå °¹¼ö private $changes_rows; # ¼öÁ¤µÈ ·¹ÄÚµå °¹¼ö private $params = array(); # dsn : ÆÄÀϰæ·Î:ÆÄÀϸí public function __construct($dsn){ $dsn_args = explode(':',$dsn); $this->handle = sqlite_open($dsn_args[0].'/'.$dsn_args[1]); if($errno_num = sqlite_last_error($this->handle)){ throw new ErrorReporter(sqlite_error_string($errno_num),$errno_num); } # ¹®Àڼ #$chrset = parent::character_set_name(); #if(strcmp($chrset,'utf8')) parent::set_charset(str_replace('-','',_CHRSET_)); $this->host = $dsn_args[0]; $this->dbname = $dsn_args[1]; } # µðºñ ¼±Åà public function select_db($dbname){ $this->handle = sqlite_factory($this->host.'/'.$dbname); if($errno_num = sqlite_last_error($this->handle)){ throw new ErrorReporter(sqlite_error_string($errno_num),$errno_num); } $this->dbname= $dbname; } # ÇÁ¶óÆÛƼ °ª ¼³Á¤ public function __set($propertyName,$val){ #if(function_exists('property_exists')){ if(property_exists(__CLASS__,$propertyName)){ $this->{$propertyName} = $val; } #} } # ÇÁ¶óÆÛƼ °ª °¡Á®¿À±â public function __get($property){ return $this->{$property}; } # @ interface : addParams # sqlite->addParams('name','È«±æµ¿'); sqlite->addParams('age',20); public function addParams($key,$val){ if(!isset($this->params[$key])){ $this->params[$key] = sqlite_escape_string($val); } } # @ interface : bindParams # :s1 -> :[¹®ÀÚŸÀÔ]+[º¯¼ö] # :s[¹®ÀÚ], :d[Á¤¼ö], :f[¼Ò¼ö], :b[¹ÙÀ̳ʸ®] # º¯¼öŸÀÔ, :s1,:sa,:sA, :d1, :d2, :dA ¾î¶»°Ôµç »ó°ü¾øÀ½ # ´Ü :s1, :s1 ÀÌ·¸°Ô Áߺ¹ µÇ¾î¼´Â ¾ÈµÊ # ("SELECT * FROM `TABLE` WHERE name=':s1' and age=':d2'",array('php',26)); public function bindParams($query,$args=array()){ if(strpos($query,':') !==false){ preg_match_all("/(\:[s|d|f|b])+[0-9]+/s",$query,$matches); if(is_array($matches)) { foreach($matches[0] as $n => $s) { # ¹®ÀÚŸÀÔ°ú °ªÀÌ ÀÏÄ¡ÇÏ´ÂÁö üũ $bindtype = substr($s,1,1); $bvmatched = false; switch($bindtype){ case 's': if(is_string($args[$n])) $bvmatched = true; break; case 'd': if(is_int($args[$n])) $bvmatched = true; break; case 'f': if(is_float($args[$n])) $bvmatched = true; break; case 'b': if(is_binary($args[$n])) $bvmatched = true; break; } if($bvmatched){ $query = str_replace($s,'%'.$bindtype,$query); $query = sprintf("{$query}",sqlite_escape_string($args[$n])); } } } } return $query; } # @ interface : query public function query($query){ $result = sqlite_query($this->handle,$query); if( !$result ){ $errno_num = sqlite_last_error($this->handle); throw new ErrorReporter(sqlite_error_string($errno_num),$errno_num); } $this->num_rows = sqlite_num_rows($result); $this->resultHandle = $result; return $this; } public function exec($query){ $result = sqlite_exec($this->handle,$query,$error); if(!$result){ throw new ErrorReporter("Error in query: '.$error.'"); }else{ $this->changes_rows = sqlite_changes($this->handle); } } # @ interface : insert # args = array(key => value) # args['name'] = 1, args['age'] = 2; public function insert($table){ $fieldk = ''; $datav = ''; if(count($this->params)<1){ throw new ErrorReporter('',0); } foreach($this->params as $k => $v){ $fieldk .= sprintf("%s,",$k); $datav .= sprintf("'%s',",$v); } $fieldk = substr($fieldk,0,-1); $datav = substr($datav,0,-1); $this->params = array(); #º¯¼ö°ª ÃʱâÈ $query = sprintf("INSERT INTO %s (%s) VALUES (%s)",$table,$fieldk,$datav); $this->exec($query); } # @ interface : update public function update($table,$where){ $fieldkv = ''; if(count($this->params)<1){ throw new ErrorReporter('',0); } foreach($this->params as $k => $v){ $fieldkv .= sprintf("%s='%s',",$k,$v); } $fieldkv = substr($fieldkv,0,-1); $this->params = array(); #º¯¼ö°ª ÃʱâÈ $query = sprintf("UPDATE %s SET %s WHERE %s",$table,$fieldkv,$where); $this->exec($query); } # @ interface : delete public function delete($table,$where){ $query = sprintf("DELETE FROM %s WHERE %s",$table,$where); $this->exec($query); } # ÀúÀåÇÑ ¸¶Áö¸· primary_key °ª public function insert_id(){ return sqlite_last_insert_rowid($this->handle); } # ¹öÀüÁ¤º¸ public function server_info(){ return sqlite_libversion(); } # ¹®Àڼ Á¤º¸ public function character_set_name(){ return sqlite_libencoding(); } # db close public function __destruct(){ sqlite_close($this->handle); } } ?> À§ ¿¡ Àִ Ŭ·¡½º¸¦ Å×½ºÆ® ÇØ º¸°Ú½À´Ï´Ù <?php $path = $_SERVER['DOCUMENT_ROOT']; include_once $path.'/config/config.php'; try{ $sqlite = new DBSqlite($path."/testdirectory:sqlite.db"); #$table_skima = "CREATE TABLE test_table (uid int(10),name varchar(30),age int(5),PRIMARY KEY (uid))"; #$sqlite->query($table_skima); $fresult = $sqlite->query("SELECT * FROM test_table"); $field_info = $fresult->columnName(); if(is_array($field_info)){ foreach($field_info as $fk => $fv){ $out->outPrintln("Field : ".$fv); } } $out->outPrintln('--------------------------<br />'); $field_type = $sqlite->columnTypes('test_table'); if(is_array($field_type)){ foreach($field_type as $ftk => $ftv){ $out->outPrintln("Column : ".$ftv.' Type : '.$ftv); } } $out->outPrintln('--------------------------<br />'); /*$sqlite->addParams('uid',4); $sqlite->addParams('name','´ëÇѹα¹'); $sqlite->addParams('age',27); $sqlite->insert('test_table'); */ $result = $sqlite->query("SELECT * FROM test_table"); $out->outPrint("·¹ÄÚµå¼ö : "); $out->outPrintln($result->num_rows); while($list = $result->fetch_assoc()){ foreach($list as $k => $v){ $out->outPrintln($k." -> ".$v); } $out->outPrintln("------------"); } } catch(ErrorReporter $e){ $out->outPrintln($e->getTraceText()); $out->outPrintln($e->getMessage()); if( $e->getCode() ) $out->outPrint($error_msg[$e->getCode()]); } ?> |
|||||
|
|||||
Àüü´ñ±Û¼ö 0
12345678910


