Class
  • Tip&Tech
[ÇÔ¼ö] sqlite ÇÔ¼ö¸¦ Ȱ¿ëÇÑ sqlite Ŭ·¡½º 2Â÷ °³¹ß¿ë
±Û¾´ÀÌ ±â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ ³¯ Â¥ 10-02-08 00:46 Á¶ ȸ 4487
°£ÆíURL http://www.phpschool.com/link/tipntech/71126 º¹»ç

SyntaxHighlight·Î º¸±â

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

  • °Ô½Ã¹° 5,769°Ç RSS
¹øÈ£ºÐ·ùÁ¦¸ñ±Û¾´À̳¯Â¥Á¶È¸
5,669 ÇÔ¼ö php5 Æû Àü¼Û °ª ¹× ¹®ÀÚ Ã¼Å©Çϱâ [1] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-03-13 6420
5,668 ÇÔ¼ö ¾îÂ÷ÇÇ ¸¹ÀÌµé ¾²½Ã°ÚÁö¸¸ XSS °ü·Ã PHP5¿ë Ŭ·¡½º ÀÔ´Ï´Ù. [2] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-03-12 5999
5,667 ÇÔ¼ö Xml Object ¸¦ Array·Î º¯È¯ÇÏ´Â ÇÔ¼ö [1] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§Çª¸¥ÇÇ 10-03-09 5891
5,666 ÇÔ¼ö    ´ñ±ÛXml Object ¸¦ Array·Î º¯È¯ÇÏ´Â ÇÔ¼ö Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§Çª¸¥ÇÇ 10-04-08 2889
5,665 ÇÔ¼ö php5 ¿ë ÅÛÇø´ Ŭ·¡½º ver0.83beta Ãâ½Ã - 10/03/13 ¼öÁ¤º» ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-03-05 5187
5,664 ÇÔ¼ö [Æß] ÆÄÀÏ ´Ù¿î·Îµå - À̾î¹Þ±â ¼ÓµµÁ¦ÇÑ ÀÎÁõ ±âŸ.. [2] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§nux 10-02-27 5974
5,663 ÇÔ¼ö ¿Í¿ì php5¿¡¼­ ÀÌ·¸°Ô ¸¹Àº Ŭ·¡½ºµéÀÌ Á¦°øµÇ´ÂÁö ¸ô¶ú³×¿ä [2] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-19 4712
5,662 ÇÔ¼ö GD¸¦ ÀÌ¿ëÇÑ ±âº»±â´É ½æ³×ÀÏ,CROP,CROP½æ³×ÀÏ,ÅØ½ºÆ® ¸¸µé±â [6] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-18 7935
5,661 ÇÔ¼ö php5 µð·ºÅ丮 Ŭ·¡½º [11] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-14 5600
5,660 ÇÔ¼ö php5 ÆÄÀÏ Å¬·¡½º, Ãß»ó filesŬ·¡½º, input¸®¼Ò½º | output¸®¼Ò¡¦ [13] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-10 4550
5,659 ÇÔ¼ö À̸ÞÀÏ ÁÖ¼Ò º¸È£ ÇÔ¼ö [5] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§ÇâÀ¯°í·¡ 10-02-10 4312
5,658 ÇÔ¼ö ÀÖÀ½ ÆíÇÏ°í ¾øÀ½ ºÒÆíÇÑ "·£´ý"Ŭ·¡½º [6] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-09 4468
5,657 ÇÔ¼ö °£´ÜÇÑ À̹ÌÁö »çÀÌÁî Á¶Á¤ Ãâ·Â Ŭ·¡½º ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-08 4629
5,656 ÇÔ¼ö sqlite ÇÔ¼ö¸¦ Ȱ¿ëÇÑ sqlite Ŭ·¡½º 2Â÷ °³¹ß¿ë ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-08 4487
5,655 ÇÔ¼ö »çÁø Ä«·¹¸¶ Á¤º¸ exif Ŭ·¡½º ¼öÁ¤º» ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-07 3487
5,654 ÇÔ¼ö ¾ç+À½·Â ´Þ·Â Ä«·»´Ù Ŭ·¡½º 2 ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-07 4414
5,653 ÇÔ¼ö [³ëÆÁ]Ä«·»´Ù Ŭ·¡½º ±âº»1(¾ç·Â) ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-05 3960
5,652 ÇÔ¼ö »çÁø Ä«¸Þ¶ó Á¤º¸ exif Ŭ·¡½º [9] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-04 4728
5,651 ÇÔ¼ö [³ëÆÁ]echo, ÀÚ¹Ù½ºÅ©¸³Æ® alert â Ŭ·¡½º·Î ¹­¾î¼­ »ç¿ëÇÏÀÚ [2] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§php»ç¶ûÀÌ 10-02-04 5426
5,650 ÇÔ¼ö ASN.1 Code Generator pcc 0.1 [8] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§±×³× 10-02-03 4566
 
12345678910