Skip to content

Instantly share code, notes, and snippets.

@dekassegui
Last active February 9, 2017 03:22
Show Gist options
  • Save dekassegui/6e9439d79400a21f9a6828e8e58afd10 to your computer and use it in GitHub Desktop.
Save dekassegui/6e9439d79400a21f9a6828e8e58afd10 to your computer and use it in GitHub Desktop.
Extensão da classe PDO provendo workaround para bug no método de criação de funções quando db é SQLite.
<?php
/**
* Extensão da classe PDO para SQLite, provendo "workaround" para
* bug no método de criação de funções em algumas versões de PHP
* e métodos de conveniência da extinta classe SQLite3.
* Exemplo de uso:
* try {
* $pdo = new SQLitePDO();
* $pdo.connect("path_to/db.sqlite");
* } catch(PDOException $e) {
* die($e->getMessage());
* }
*/
class SQLitePDO extends PDO
{
public function __construct() {}
/**
* Instancia objeto e agrega funções nativas para uso nas requisições.
*
* @param $dsn String container do "data source name".
*/
public function connect($dsn)
{
parent::__construct('sqlite:'.$dsn);
$this->sqliteCreateFunction('regex', 'preg_match', 2);
}
/**
* Executa requisição de resultado único com tipo primitivo.
*
* Nota: Não substitui completamente o método de mesmo nome no SQlite3.
*
* @param $sql String container do sql a executar.
* @return O valor único requisitado na expressão.
*/
public function querySingle($sql)
{
$result = $this->query($sql);
return $result->fetchColumn();
}
/**
* @return Retorna texto descrevendo a falha na requisição mais recente.
*/
public function lastErrorMsg()
{
return $this->errorInfo()[2];
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment