123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724 |
- <?php
- define('MDB2_AUTOQUERY_INSERT', 1);
- define('MDB2_AUTOQUERY_UPDATE', 2);
- define('MDB2_AUTOQUERY_DELETE', 3);
- define('MDB2_AUTOQUERY_SELECT', 4);
- class MDB2_Extended extends MDB2_Module_Common
- {
-
-
- function autoPrepare($table, $table_fields, $mode = MDB2_AUTOQUERY_INSERT,
- $where = false, $types = null, $result_types = MDB2_PREPARE_MANIP)
- {
- $query = $this->buildManipSQL($table, $table_fields, $mode, $where);
- if (MDB2::isError($query)) {
- return $query;
- }
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- $lobs = array();
- foreach ((array)$types as $param => $type) {
- if (($type == 'clob') || ($type == 'blob')) {
- $lobs[$param] = $table_fields[$param];
- }
- }
- return $db->prepare($query, $types, $result_types, $lobs);
- }
-
-
-
- function autoExecute($table, $fields_values, $mode = MDB2_AUTOQUERY_INSERT,
- $where = false, $types = null, $result_class = true, $result_types = MDB2_PREPARE_MANIP)
- {
- $fields_values = (array)$fields_values;
- if ($mode == MDB2_AUTOQUERY_SELECT) {
- if (is_array($result_types)) {
- $keys = array_keys($result_types);
- } elseif (!empty($fields_values)) {
- $keys = $fields_values;
- } else {
- $keys = array();
- }
- } else {
- $keys = array_keys($fields_values);
- }
- $params = array_values($fields_values);
- if (empty($params)) {
- $query = $this->buildManipSQL($table, $keys, $mode, $where);
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- if ($mode == MDB2_AUTOQUERY_SELECT) {
- $result = $db->query($query, $result_types, $result_class);
- } else {
- $result = $db->exec($query);
- }
- } else {
- $stmt = $this->autoPrepare($table, $keys, $mode, $where, $types, $result_types);
- if (MDB2::isError($stmt)) {
- return $stmt;
- }
- $result = $stmt->execute($params, $result_class);
- $stmt->free();
- }
- return $result;
- }
-
-
-
- function buildManipSQL($table, $table_fields, $mode, $where = false)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- if ($db->options['quote_identifier']) {
- $table = $db->quoteIdentifier($table);
- }
- if (!empty($table_fields) && $db->options['quote_identifier']) {
- foreach ($table_fields as $key => $field) {
- $table_fields[$key] = $db->quoteIdentifier($field);
- }
- }
- if ((false !== $where) && (null !== $where)) {
- if (is_array($where)) {
- $where = implode(' AND ', $where);
- }
- $where = ' WHERE '.$where;
- }
- switch ($mode) {
- case MDB2_AUTOQUERY_INSERT:
- if (empty($table_fields)) {
- return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
- 'Insert requires table fields', __FUNCTION__);
- }
- $cols = implode(', ', $table_fields);
- $values = '?'.str_repeat(', ?', (count($table_fields) - 1));
- return 'INSERT INTO '.$table.' ('.$cols.') VALUES ('.$values.')';
- break;
- case MDB2_AUTOQUERY_UPDATE:
- if (empty($table_fields)) {
- return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
- 'Update requires table fields', __FUNCTION__);
- }
- $set = implode(' = ?, ', $table_fields).' = ?';
- $sql = 'UPDATE '.$table.' SET '.$set.$where;
- return $sql;
- break;
- case MDB2_AUTOQUERY_DELETE:
- $sql = 'DELETE FROM '.$table.$where;
- return $sql;
- break;
- case MDB2_AUTOQUERY_SELECT:
- $cols = !empty($table_fields) ? implode(', ', $table_fields) : '*';
- $sql = 'SELECT '.$cols.' FROM '.$table.$where;
- return $sql;
- break;
- }
- return $db->raiseError(MDB2_ERROR_SYNTAX, null, null,
- 'Non existant mode', __FUNCTION__);
- }
-
-
-
- function limitQuery($query, $types, $limit, $offset = 0, $result_class = true,
- $result_wrap_class = false)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- $result = $db->setLimit($limit, $offset);
- if (MDB2::isError($result)) {
- return $result;
- }
- return $db->query($query, $types, $result_class, $result_wrap_class);
- }
-
-
-
- function execParam($query, $params = array(), $param_types = null)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- settype($params, 'array');
- if (empty($params)) {
- return $db->exec($query);
- }
- $stmt = $db->prepare($query, $param_types, MDB2_PREPARE_MANIP);
- if (MDB2::isError($stmt)) {
- return $stmt;
- }
- $result = $stmt->execute($params);
- if (MDB2::isError($result)) {
- return $result;
- }
- $stmt->free();
- return $result;
- }
-
-
-
- function getOne($query, $type = null, $params = array(),
- $param_types = null, $colnum = 0)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- settype($params, 'array');
- settype($type, 'array');
- if (empty($params)) {
- return $db->queryOne($query, $type, $colnum);
- }
- $stmt = $db->prepare($query, $param_types, $type);
- if (MDB2::isError($stmt)) {
- return $stmt;
- }
- $result = $stmt->execute($params);
- if (!MDB2::isResultCommon($result)) {
- return $result;
- }
- $one = $result->fetchOne($colnum);
- $stmt->free();
- $result->free();
- return $one;
- }
-
-
-
- function getRow($query, $types = null, $params = array(),
- $param_types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- settype($params, 'array');
- if (empty($params)) {
- return $db->queryRow($query, $types, $fetchmode);
- }
- $stmt = $db->prepare($query, $param_types, $types);
- if (MDB2::isError($stmt)) {
- return $stmt;
- }
- $result = $stmt->execute($params);
- if (!MDB2::isResultCommon($result)) {
- return $result;
- }
- $row = $result->fetchRow($fetchmode);
- $stmt->free();
- $result->free();
- return $row;
- }
-
-
-
- function getCol($query, $type = null, $params = array(),
- $param_types = null, $colnum = 0)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- settype($params, 'array');
- settype($type, 'array');
- if (empty($params)) {
- return $db->queryCol($query, $type, $colnum);
- }
- $stmt = $db->prepare($query, $param_types, $type);
- if (MDB2::isError($stmt)) {
- return $stmt;
- }
- $result = $stmt->execute($params);
- if (!MDB2::isResultCommon($result)) {
- return $result;
- }
- $col = $result->fetchCol($colnum);
- $stmt->free();
- $result->free();
- return $col;
- }
-
-
-
- function getAll($query, $types = null, $params = array(),
- $param_types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT,
- $rekey = false, $force_array = false, $group = false)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- settype($params, 'array');
- if (empty($params)) {
- return $db->queryAll($query, $types, $fetchmode, $rekey, $force_array, $group);
- }
- $stmt = $db->prepare($query, $param_types, $types);
- if (MDB2::isError($stmt)) {
- return $stmt;
- }
- $result = $stmt->execute($params);
- if (!MDB2::isResultCommon($result)) {
- return $result;
- }
- $all = $result->fetchAll($fetchmode, $rekey, $force_array, $group);
- $stmt->free();
- $result->free();
- return $all;
- }
-
-
-
- function getAssoc($query, $types = null, $params = array(), $param_types = null,
- $fetchmode = MDB2_FETCHMODE_DEFAULT, $force_array = false, $group = false)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- settype($params, 'array');
- if (empty($params)) {
- return $db->queryAll($query, $types, $fetchmode, true, $force_array, $group);
- }
- $stmt = $db->prepare($query, $param_types, $types);
- if (MDB2::isError($stmt)) {
- return $stmt;
- }
- $result = $stmt->execute($params);
- if (!MDB2::isResultCommon($result)) {
- return $result;
- }
- $all = $result->fetchAll($fetchmode, true, $force_array, $group);
- $stmt->free();
- $result->free();
- return $all;
- }
-
-
-
- function executeMultiple($stmt, $params = null)
- {
- if (MDB2::isError($stmt)) {
- return $stmt;
- }
- for ($i = 0, $j = count($params); $i < $j; $i++) {
- $result = $stmt->execute($params[$i]);
- if (MDB2::isError($result)) {
- return $result;
- }
- }
- return MDB2_OK;
- }
-
-
-
- function getBeforeID($table, $field = null, $ondemand = true, $quote = true)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- if ($db->supports('auto_increment') !== true) {
- $seq = $table.(empty($field) ? '' : '_'.$field);
- $id = $db->nextID($seq, $ondemand);
- if (!$quote || MDB2::isError($id)) {
- return $id;
- }
- return $db->quote($id, 'integer');
- } elseif (!$quote) {
- return null;
- }
- return 'NULL';
- }
-
-
-
- function getAfterID($id, $table, $field = null)
- {
- $db = $this->getDBInstance();
- if (MDB2::isError($db)) {
- return $db;
- }
- if ($db->supports('auto_increment') !== true) {
- return $id;
- }
- return $db->lastInsertID($table, $field);
- }
-
- }
- ?>
|