type_cast = Pluf_DB_defaultTypecast(); $this->debug('* MYSQL CONNECT'); $this->con_id = mysql_connect($server, $user, $pwd); $this->debug = $debug; $this->pfx = $pfx; if (!$this->con_id) { throw new Exception($this->getError()); } $this->database($dbname); $this->execute('SET NAMES \'utf8\''); } function database($dbname) { $db = mysql_select_db($dbname); $this->debug('* USE DATABASE '.$dbname); if (!$db) { throw new Exception($this->getError()); } return true; } /** * Get the version of the MySQL server. * * @return string Version string */ function getServerInfo() { return mysql_get_server_info($this->con_id); } /** * Log the queries. Keep track of the last query and if in debug mode * keep track of all the queries in * $GLOBALS['_PX_debug_data']['sql_queries'] * * @param string Query to keep track * @return bool true */ function debug($query) { $this->lastquery = $query; if (!$this->debug) return true; if (!isset($GLOBALS['_PX_debug_data']['sql_queries'])) $GLOBALS['_PX_debug_data']['sql_queries'] = array(); $GLOBALS['_PX_debug_data']['sql_queries'][] = $query; return true; } function close() { if ($this->con_id) { mysql_close($this->con_id); return true; } else { return false; } } function select($query) { $this->debug($query); $cur = mysql_query($query, $this->con_id); if ($cur) { $res = array(); while ($row = mysql_fetch_assoc($cur)) { $res[] = $row; } mysql_free_result($cur); return $res; } else { throw new Exception($this->getError()); } } function execute($query) { $this->debug($query); $cur = mysql_query($query, $this->con_id); if (!$cur) { throw new Exception($this->getError()); } else { return true; } } function getLastID() { $this->debug('* GET LAST ID'); return (int) mysql_insert_id($this->con_id); } /** * Returns a string ready to be used in the exception. * * @return string Error string */ function getError() { if ($this->con_id) { return mysql_errno($this->con_id).' - ' .mysql_error($this->con_id).' - '.$this->lastquery; } else { return mysql_errno().' - ' .mysql_error().' - '.$this->lastquery; } } function esc($str) { return '\''.mysql_real_escape_string($str, $this->con_id).'\''; } /** * Quote the column name. * * @param string Name of the column * @return string Escaped name */ function qn($col) { return '`'.$col.'`'; } /** * Start a transaction. */ function begin() { if (Pluf::f('db_mysql_transaction', false)) { $this->execute('BEGIN'); } } /** * Commit a transaction. */ function commit() { if (Pluf::f('db_mysql_transaction', false)) { $this->execute('COMMIT'); } } /** * Rollback a transaction. */ function rollback() { if (Pluf::f('db_mysql_transaction', false)) { $this->execute('ROLLBACK'); } } function __toString() { return 'con_id.')>'; } }