|
<?php |
|
|
|
// |
|
// Open Web Analytics - An Open Source Web Analytics Framework |
|
// |
|
// Copyright 2006 Peter Adams. All rights reserved. |
|
// |
|
// Licensed under GPL v2.0 http://www.gnu.org/copyleft/gpl.html |
|
// |
|
// Unless required by applicable law or agreed to in writing, software |
|
// distributed under the License is distributed on an "AS IS" BASIS, |
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
// See the License for the specific language governing permissions and |
|
// limitations under the License. |
|
// |
|
// $Id$ |
|
// |
|
|
|
|
|
define('OWA_DTD_BIGINT', 'BIGINT'); |
|
define('OWA_DTD_INT', 'INT'); |
|
define('OWA_DTD_TINYINT', 'TINYINT(1)'); |
|
define('OWA_DTD_TINYINT2', 'TINYINT(2)'); |
|
define('OWA_DTD_TINYINT4', 'TINYINT(4)'); |
|
define('OWA_DTD_SERIAL', 'SERIAL'); |
|
define('OWA_DTD_PRIMARY_KEY', 'PRIMARY KEY'); |
|
define('OWA_DTD_VARCHAR10', 'VARCHAR(10)'); |
|
define('OWA_DTD_VARCHAR255', 'VARCHAR(255)'); |
|
define('OWA_DTD_VARCHAR', 'VARCHAR(%s)'); |
|
define('OWA_DTD_TEXT', 'MEDIUMTEXT'); |
|
define('OWA_DTD_BOOLEAN', 'TINYINT(1)'); |
|
define('OWA_DTD_TIMESTAMP', 'TIMESTAMP'); |
|
define('OWA_DTD_BLOB', 'BLOB'); |
|
define('OWA_DTD_INDEX', 'KEY'); |
|
define('OWA_DTD_AUTO_INCREMENT', 'AUTO_INCREMENT'); |
|
define('OWA_DTD_NOT_NULL', 'NOT NULL'); |
|
define('OWA_DTD_UNIQUE', 'PRIMARY KEY(%s)'); |
|
define('OWA_SQL_ADD_COLUMN', 'ALTER TABLE %s ADD %s %s'); |
|
define('OWA_SQL_DROP_COLUMN', 'ALTER TABLE %s DROP %s'); |
|
define('OWA_SQL_RENAME_COLUMN', 'ALTER TABLE %s CHANGE %s %s %s'); |
|
define('OWA_SQL_MODIFY_COLUMN', 'ALTER TABLE %s MODIFY %s %s'); |
|
define('OWA_SQL_RENAME_TABLE', 'ALTER TABLE %s RENAME %s'); |
|
define('OWA_SQL_CREATE_TABLE', 'CREATE TABLE IF NOT EXISTS %s (%s) %s'); |
|
define('OWA_SQL_DROP_TABLE', 'DROP TABLE IF EXISTS %s'); |
|
define('OWA_SQL_INSERT_ROW', 'INSERT into %s (%s) VALUES (%s)'); |
|
define('OWA_SQL_UPDATE_ROW', 'UPDATE %s SET %s %s'); |
|
define('OWA_SQL_DELETE_ROW', "DELETE from %s %s"); |
|
define('OWA_SQL_CREATE_INDEX', 'CREATE INDEX %s ON %s (%s)'); |
|
define('OWA_SQL_DROP_INDEX', 'DROP INDEX %s ON %s'); |
|
define('OWA_SQL_INDEX', 'INDEX (%s)'); |
|
define('OWA_SQL_BEGIN_TRANSACTION', 'BEGIN'); |
|
define('OWA_SQL_END_TRANSACTION', 'COMMIT'); |
|
define('OWA_DTD_TABLE_TYPE', 'ENGINE = %s'); |
|
define('OWA_DTD_TABLE_TYPE_DEFAULT', 'INNODB'); |
|
define('OWA_DTD_TABLE_TYPE_DISK', 'INNODB'); |
|
define('OWA_DTD_TABLE_TYPE_MEMORY', 'MEMORY'); |
|
define('OWA_SQL_ALTER_TABLE_TYPE', 'ALTER TABLE %s ENGINE = %s'); |
|
define('OWA_SQL_JOIN_LEFT_OUTER', 'LEFT OUTER JOIN'); |
|
define('OWA_SQL_JOIN_LEFT_INNER', 'LEFT INNER JOIN'); |
|
define('OWA_SQL_JOIN_RIGHT_OUTER', 'RIGHT OUTER JOIN'); |
|
define('OWA_SQL_JOIN_RIGHT_INNER', 'RIGHT INNER JOIN'); |
|
define('OWA_SQL_JOIN', 'JOIN'); |
|
define('OWA_SQL_DESCENDING', 'DESC'); |
|
define('OWA_SQL_ASCENDING', 'ASC'); |
|
define('OWA_SQL_REGEXP', 'REGEXP'); |
|
define('OWA_SQL_NOTREGEXP', 'NOT REGEXP'); |
|
define('OWA_SQL_LIKE', 'LIKE'); |
|
define('OWA_SQL_ADD_INDEX', 'ALTER TABLE %s ADD INDEX (%s) %s'); |
|
define('OWA_DTD_CHARACTER_ENCODING_UTF8', 'utf8'); |
|
define('OWA_DTD_TABLE_CHARACTER_ENCODING', 'CHARACTER SET = %s'); |
|
|
|
|
|
/** |
|
* MySQL Data Access Class |
|
* |
|
* @author Peter Adams <peter@openwebanalytics.com> |
|
* @copyright Copyright © 2006 Peter Adams <peter@openwebanalytics.com> |
|
* @license http://www.gnu.org/copyleft/gpl.html GPL v2.0 |
|
* @category owa |
|
* @package owa |
|
* @version $Revision$ |
|
* @since owa 1.0.0 |
|
*/ |
|
class owa_db_mysql extends owa_db { |
|
|
|
function connect() { |
|
|
|
if (!$this->connection) { |
|
|
|
if ($this->getConnectionParam('persistant')) { |
|
|
|
$this->connection = mysql_pconnect( |
|
$this->getConnectionParam('host'), |
|
$this->getConnectionParam('user'), |
|
$this->getConnectionParam('password'), |
|
$this->getConnectionParam('open_new_connection') |
|
); |
|
|
|
} else { |
|
|
|
$this->connection = mysql_connect( |
|
$this->getConnectionParam('host'), |
|
$this->getConnectionParam('user'), |
|
$this->getConnectionParam('password'), |
|
$this->getConnectionParam('open_new_connection') |
|
); |
|
} |
|
|
|
$this->database_selection = mysql_select_db($this->getConnectionParam('name'), $this->connection); |
|
|
|
if (function_exists('mysql_set_charset')) { |
|
mysql_set_charset('utf8',$this->connection); |
|
} else { |
|
$this->query("SET NAMES 'utf8'"); |
|
} |
|
|
|
} |
|
|
|
|
|
if (!$this->connection || !$this->database_selection) { |
|
$this->e->alert('Could not connect to database.'); |
|
$this->connection_status = false; |
|
return false; |
|
} else { |
|
$this->connection_status = true; |
|
return true; |
|
} |
|
} |
|
|
|
|
|
/** |
|
* Database Query |
|
* |
|
* @param string $sql |
|
* @access public |
|
* |
|
*/ |
|
function query($sql) { |
|
|
|
if ($this->connection_status == false): |
|
owa_coreAPI::profile($this, __FUNCTION__, __LINE__); |
|
$this->connect(); |
|
owa_coreAPI::profile($this, __FUNCTION__, __LINE__); |
|
endif; |
|
|
|
owa_coreAPI::profile($this, __FUNCTION__, __LINE__); |
|
$this->e->debug(sprintf('Query: %s', $sql)); |
|
|
|
$this->result = ''; |
|
$this->new_result = ''; |
|
|
|
if (!empty($this->new_result)): |
|
mysql_free_result($this->new_result); |
|
endif; |
|
owa_coreAPI::profile($this, __FUNCTION__, __LINE__, $sql); |
|
$result = @mysql_unbuffered_query($sql, $this->connection); |
|
owa_coreAPI::profile($this, __FUNCTION__, __LINE__); |
|
// Log Errors |
|
if (mysql_errno($this->connection)): |
|
$this->e->debug(sprintf('A MySQL error occured. Error: (%s) %s. Query: %s', |
|
mysql_errno($this->connection), |
|
htmlspecialchars(mysql_error($this->connection)), |
|
$sql)); |
|
endif; |
|
owa_coreAPI::profile($this, __FUNCTION__, __LINE__); |
|
$this->new_result = $result; |
|
|
|
return $this->new_result; |
|
|
|
} |
|
|
|
function close() { |
|
|
|
@mysql_close($this->connection); |
|
return; |
|
|
|
} |
|
|
|
/** |
|
* Fetch result set array |
|
* |
|
* @param string $sql |
|
* @return array |
|
* @access public |
|
*/ |
|
function get_results($sql) { |
|
|
|
if ($sql): |
|
$this->query($sql); |
|
endif; |
|
|
|
$num_rows = 0; |
|
|
|
while ( $row = @mysql_fetch_assoc($this->new_result) ) { |
|
$this->result[$num_rows] = $row; |
|
$num_rows++; |
|
} |
|
|
|
if ($this->result): |
|
|
|
return $this->result; |
|
|
|
else: |
|
return null; |
|
endif; |
|
} |
|
|
|
/** |
|
* Fetch Single Row |
|
* |
|
* @param string $sql |
|
* @return array |
|
*/ |
|
function get_row($sql) { |
|
|
|
$this->query($sql); |
|
|
|
//print_r($this->result); |
|
$row = @mysql_fetch_assoc($this->new_result); |
|
|
|
return $row; |
|
} |
|
|
|
/** |
|
* Prepares and escapes string |
|
* |
|
* @param string $string |
|
* @return string |
|
*/ |
|
function prepare($string) { |
|
|
|
if ($this->connection_status == false): |
|
$this->connect(); |
|
endif; |
|
|
|
return mysql_real_escape_string($string, $this->connection); |
|
|
|
} |
|
} |
|
|
|
?> |
|
|