<?php
class PDOHelper
{
public static $object,
$var_prepare = [];
}
function base_mysql($host, $user, $pass, $dbname, $charset = 'utf8')
{
return _pdo_connect('mysql:host='.$host.';dbname='.$dbname.';charset='.$charset, $user, $pass);
}
function base_oracle($host, $user, $pass, $dbname, $charset = 'utf8')
{
return _pdo_connect('oci:dbname='.$host.'/'.$dbname.';charset='.$charset, $user, $pass);
}
function base_sqlite($path)
{
return _pdo_connect('sqlite:'.$path, null, null);
}
function _pdo_connect($dsn, $user, $pass)
{
$opt = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);
try
{
$pdo_object = new PDO($dsn, $user, $pass, $opt);
}
catch (PDOException $e)
{
$place = debug_backtrace();
trigger_error($place['0']['function'].'() in <b>'.$place['0']['file'].'</b> on line <b>'.$place['0']['line'].'</b>, description error: '.$e->getMessage(), E_USER_WARNING);
return false;
}
PDOHelper::$object = $pdo_object;
return $pdo_object;
}
function ex($var)
{
PDOHelper::$var_prepare[] = strval($var);
return '?';
}
function base($sql)
{
if (is_object(PDOHelper::$object))
{
try
{
if (is_array(PDOHelper::$var_prepare) && !empty(PDOHelper::$var_prepare))
{
$query_object = PDOHelper::$object->prepare($sql);
$query_object->execute(PDOHelper::$var_prepare);
}
else
{
$query_object = PDOHelper::$object->query($sql);
}
}
catch (PDOException $e)
{
$place = debug_backtrace();
trigger_error($place['0']['function'].'() in <b>'.$place['0']['file'].'</b> on line <b>'.$place['0']['line'].'</b>, description error: '.$e->getMessage(), E_USER_WARNING);
return false;
}
PDOHelper::$var_prepare = [];
if ($query_object)
{
if (preg_match('/^SELECT/is', $sql))
{
if (preg_match('/^SELECT (COUNT|SUM|MAX|MIN)\((.+)\) FROM/is', $sql))
{
return $query_object->fetch( PDO::FETCH_NUM )[0];
}
return $query_object->fetchAll( PDO::FETCH_ASSOC );
}
if (preg_match('/^INSERT/is', $sql))
{
return PDOHelper::$object->lastInsertId();
}
return true;
}
}
return false;
}
?>