Clase de SQLite3 para PHP

SQLite

Últimamente, desarrollé un profundo amor hacia SQLite. Revisando la página http://7devs.com encontré una interesante clase (por no decir “extremadamente simple”) para el manejo de una base de datos MySQL. En ese momento, me dije WHY NOT? y decidí reescribirla para que use SQLite3.

He aquí el resultado:

<?php

/*
* SQLite3 Class
* based on the code of miquelcamps
* @see http://7devs.com/code/view.php?id=67
*/

class DB{
  private $sqlite;
  private $mode;

  function __construct( $filename, $mode = SQLITE3_ASSOC ){
    $this->mode = $mode;
    $this->sqlite = new SQLite3($filename);
  }

  function __destruct(){
    @$this->sqlite->close();
  }

  function clean( $str ){
    return $this->sqlite->escapeString( $str );
  }

  function query( $query ){
    $res = $this->sqlite->query( $query );
    if ( !$res ){
      throw new Exception( $this->sqlite->lastErrorMsg() );
    }

    return $res;
  }

  function queryRow( $query ){
    $res = $this->query( $query );
    $row = $res->fetchArray( $this->mode );
    return $row;
  }

  function queryOne( $query ){
    $res = $this->sqlite->querySingle( $query );
    return $res;
  }

  function queryAll( $query ){
    $rows = array();
    if( $res = $this->query( $query ) ){
      while($row = $res->fetchArray($this->mode)){
        $rows[] = $row;
      }
    }
    return $rows;
  }

  function getLastID(){
    return $this->sqlite->lastInsertRowID();
  }
}

// initialize
$db = new DB( 'database.sqlite' );

// create the database structure
$query = 'CREATE TABLE IF NOT EXISTS "foobar" (
            "id" INTEGER PRIMARY KEY AUTOINCREMENT,
            "name" TEXT
          );';
$db->query( $query );

// insert some data to the database
$query = array(
  "INSERT INTO foobar VALUES(1,'LOLOLOL');",
  "INSERT INTO foobar VALUES(2,'Lorem Ipsum....');"
  );

foreach($query as $key):
  $db->query( $key );
endforeach;

// query example, multiple rows
$users = $db->queryAll( "SELECT * FROM foobar" );

// query example, one row
$search = 'Lorem Ipsum....';
$user_info = $db->queryRow( sprintf( "SELECT * FROM foobar WHERE name = '%s'", $db->clean( $search ) ) );

// query example, one result
$total_users = $db->queryOne( "SELECT COUNT(*) FROM foobar" );

// insert query
$insert = array(
  'id' => 3,
  'text' => 'Testing'
);
$db->query( sprintf( "INSERT INTO foobar VALUES ( %s, '%s' )", $db->clean ( $insert['id'] ), $db->clean( $insert['text'] ) ) );

?>

Dejo un link a un pastebin por si quieren copiarlo y WordPress molesta 😛 http://pastebin.com/XBpWWfTE
La clase la libero completamente libre. Pueden usarla para lo que quieran, a excepción que el creador de la clase original tenga alguna objeción.

Anuncios


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s