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

Saluton Mondo!

Tras el sentirme avergonzado de que mi último post se realizó en el año 2009, decidí volver a empezar este intento de blog.

Soy Fernando Mumbach, un programador web, otaku y lignuxero, nacido en Paso de los Libres y aficionado a casi todo campo relativo a la computación o tecnología.

Mi idea principal de querer crear un blog es compartir mis “conocimientos” sobre la internez, así como poder tener un lugar donde sentirme “digno” de decir “esta es mi página personal :)”.

Pienso poner snippets, videos, consejos y todo aquello que vea que pueda llegar a ser útil para el lector (o me sirva de recordatorio ;))

No me suele gustar escribir cosas demasiado complejas o largas, así que no esperen mucho. Es simplemente un lugar donde ordenar mis “conocimientos diarios” como “aficiones diarias” también. En este momento estoy armándome una lista de TODO para ir escribiendo periódicamente sobre varios temas. Espero que les gusten 🙂