Ejemplo n.º 1
0
Archivo: Mysqli.php Proyecto: wukka/db
 public static function closures(\MySQLi $db)
 {
     $_ = array();
     $lastquery = '';
     $_['__tostring'] = function () use($db, &$lastquery) {
         if (method_exists($db, '__toString')) {
             return $db->__toString();
         }
         if ($db->connect_error) {
             $error = $db->connect_error ? $db->connect_errno . ': connection error ... ' . $db->connect_error : '';
         } else {
             $error = $db->error ? $db->errno . ': ' . $db->error : '';
         }
         @($res = '(Wukka\\DB\\MySQLi object - ' . "\n" . '  [connection] => ' . $db->host_info . "\n" . '  [error] => ' . $error . "\n" . '  [lastquery] => ' . $lastquery . "\n" . ')');
         return $res;
     };
     $_['prep_args'] = $format_args = function ($query, array $args) use($db) {
         if (!$args || count($args) < 1) {
             return $query;
         }
         return \Wukka\DB\Query::prepare($query, $args, function ($v) use($db) {
             return "'" . $db->real_escape_string($v) . "'";
         });
     };
     $_['execute'] = function ($query) use($db, &$lastquery) {
         $lastquery = $query;
         if (strlen($lastquery) > 500) {
             $lastquery = substr($lastquery, 0, 485) . ' ...[trucated]';
         }
         $res = $db->query($query);
         if (!$res) {
             return FALSE;
         }
         $_ = array();
         if (is_object($res)) {
             $_['fetch'] = function () use($res) {
                 return $res->fetch_assoc();
             };
             $_['free'] = function () use($res) {
                 $res->free_result();
             };
         }
         $_['affected'] = $db->affected_rows;
         $_['insertid'] = $db->insert_id;
         return new Result($_);
     };
     $_['start'] = function ($auth = NULL) use($db) {
         if ($db instanceof Iface) {
             return $db->start($auth);
         }
         return $db->query('START TRANSACTION');
     };
     $_['rollback'] = function ($auth = NULL) use($db) {
         if ($db instanceof Iface) {
             return $db->rollback($auth);
         }
         return $db->query('ROLLBACK');
     };
     $_['commit'] = function ($auth = NULL) use($db) {
         if ($db instanceof Iface) {
             return $db->commit($auth);
         }
         return $db->query('COMMIT');
     };
     $_['error'] = function () use($db) {
         return $db->error;
     };
     $_['errorcode'] = function () use($db) {
         return $db->errno;
     };
     $_['isa'] = function ($name) use($db) {
         if ($db instanceof $name) {
             return TRUE;
         }
         if ($name == 'mysql') {
             return TRUE;
         }
         return FALSE;
     };
     $_['hash'] = function () use($db) {
         if ($db instanceof Iface) {
             return $db->hash();
         }
         return spl_object_hash($db);
     };
     return $_;
 }
Ejemplo n.º 2
0
Archivo: Pdo.php Proyecto: wukka/db
 public static function closures(\PDO $db)
 {
     $_ = array();
     $lastquery = '';
     $_['__tostring'] = function () use($db, &$lastquery) {
         list($errstate, $errcode, $errmsg) = $db->errorInfo();
         $error = $errmsg ? $errcode . ': ' . $errmsg : '';
         $res = '(Wukka\\DB\\PDO object - ' . "\n" . '  [driver] => ' . $db->getAttribute(\PDO::ATTR_DRIVER_NAME) . "\n" . '  [connection] => ' . @$db->getAttribute(\PDO::ATTR_CONNECTION_STATUS) . "\n" . '  [error] => ' . $error . "\n" . '  [lastquery] => ' . $lastquery . "\n" . ')';
         return $res;
     };
     $_['prep_args'] = $format_args = function ($query, array $args) use($db) {
         if (!$args || count($args) < 1) {
             return $query;
         }
         return \Wukka\DB\Query::prepare($query, $args, function ($v) use($db) {
             return $db->quote($v);
         });
     };
     $_['execute'] = function ($query) use($db, &$lastquery) {
         try {
             $lastquery = $query;
             if (strlen($lastquery) > 500) {
                 $lastquery = substr($lastquery, 0, 485) . ' ...[trucated]';
             }
             $res = $db->query($query);
             if (!$res) {
                 return FALSE;
             }
             $_ = array();
             $_['fetch'] = function () use($res) {
                 return $res->fetch(\PDO::FETCH_ASSOC);
             };
             $_['free'] = function () use($res) {
                 $res->closeCursor();
             };
             $_['affected'] = $res->rowCount();
             $_['insertid'] = $db->lastInsertId();
             return new Result($_);
         } catch (\Exception $e) {
             return FALSE;
         }
     };
     $_['start'] = function ($auth = NULL) use($db) {
         if ($db instanceof Iface) {
             return $db->start($auth);
         }
         return $db->beginTransaction();
     };
     $_['commit'] = function ($auth = NULL) use($db) {
         if ($db instanceof Iface) {
             return $db->commit($auth);
         }
         return $db->commit();
     };
     $_['rollback'] = function ($auth = NULL) use($db) {
         if ($db instanceof Iface) {
             return $db->rollback($auth);
         }
         return $db->rollback();
     };
     $_['error'] = function () use($db) {
         $info = $db->errorInfo();
         return $info[2];
     };
     $_['errorcode'] = function () use($db) {
         $info = $db->errorInfo();
         return $info[1];
     };
     $_['isa'] = function ($name) use($db) {
         if ($db instanceof $name) {
             return TRUE;
         }
         if ($name == $db->getAttribute(\PDO::ATTR_DRIVER_NAME)) {
             return TRUE;
         }
         return FALSE;
     };
     $_['hash'] = function () use($db) {
         if ($db instanceof Iface) {
             return $db->hash();
         }
         return spl_object_hash($db);
     };
     return $_;
 }