diff options
author | Paul S. Owen <psotfx@users.sourceforge.net> | 2001-11-04 15:26:33 +0000 |
---|---|---|
committer | Paul S. Owen <psotfx@users.sourceforge.net> | 2001-11-04 15:26:33 +0000 |
commit | 8504825bb4bee7019593a081049e885fb6cafaaf (patch) | |
tree | 4e56684535a43c03bf0251739c74515852bf8544 /phpBB/db/mysql4.php | |
parent | fc38cd72572bc26f3572b358ff63a0914ed8ad6f (diff) | |
download | forums-8504825bb4bee7019593a081049e885fb6cafaaf.tar forums-8504825bb4bee7019593a081049e885fb6cafaaf.tar.gz forums-8504825bb4bee7019593a081049e885fb6cafaaf.tar.bz2 forums-8504825bb4bee7019593a081049e885fb6cafaaf.tar.xz forums-8504825bb4bee7019593a081049e885fb6cafaaf.zip |
MySQL 4.x support, functionaly similar to MySQL bar transaction support
git-svn-id: file:///svn/phpbb/trunk@1276 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/db/mysql4.php')
-rw-r--r-- | phpBB/db/mysql4.php | 357 |
1 files changed, 357 insertions, 0 deletions
diff --git a/phpBB/db/mysql4.php b/phpBB/db/mysql4.php new file mode 100644 index 0000000000..bb812f9b9a --- /dev/null +++ b/phpBB/db/mysql4.php @@ -0,0 +1,357 @@ +<?php +/*************************************************************************** + * mysql.php + * ------------------- + * begin : Saturday, Feb 13, 2001 + * copyright : (C) 2001 The phpBB Group + * email : support@phpbb.com + * + * $Id$ + * + ***************************************************************************/ + +/*************************************************************************** + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + ***************************************************************************/ + +if(!defined("SQL_LAYER")) +{ + +define("SQL_LAYER","mysql4"); + +class sql_db +{ + + var $db_connect_id; + var $query_result; + var $row; + var $num_queries = 0; + var $in_transaction = 0; + + // + // Constructor + // + function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true) + { + + $this->persistency = $persistency; + $this->user = $sqluser; + $this->password = $sqlpassword; + $this->server = $sqlserver; + $this->dbname = $database; + + if($this->persistency) + { + $this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password); + } + else + { + $this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password); + } + if($this->db_connect_id) + { + if($database != "") + { + $this->dbname = $database; + $dbselect = @mysql_select_db($this->dbname); + if(!$dbselect) + { + @mysql_close($this->db_connect_id); + $this->db_connect_id = $dbselect; + } + } + return $this->db_connect_id; + } + else + { + return false; + } + } + + // + // Other base methods + // + function sql_close() + { + if($this->db_connect_id) + { + // + // Commit any remaining transactions + // + if( $this->in_transaction ) + { + @mysql_query("COMMIT", $this->db_connect_id); + } + $result = @mysql_close($this->db_connect_id); + return $result; + } + else + { + return false; + } + } + + // + // Base query method + // + function sql_query($query = "", $transaction = FALSE) + { + // + // Remove any pre-existing queries + // + unset($this->query_result); + + if( $query != "" ) + { +// $this->num_queries++; + if( $transaction == BEGIN_TRANSACTION ) + { + $result = @mysql_query("BEGIN", $this->db_connect_id); + if(!$result) + { + return false; + } + $this->in_transaction = TRUE; + } + + $this->query_result = @mysql_query($query, $this->db_connect_id); + } + + if( $this->query_result ) + { + unset($this->row[$this->query_result]); + unset($this->rowset[$this->query_result]); + + if( $transaction == END_TRANSACTION ) + { + $result = @mysql_query("COMMIT", $this->db_connect_id); + } + + return $this->query_result; + } + else + { + if($this->in_transaction) + { + @mysql_query("ROLLBACK", $this->db_connect_id); + $this->in_transaction = FALSE; + } + return false; + } + } + + // + // Other query methods + // + function sql_numrows($query_id = 0) + { + if(!$query_id) + { + $query_id = $this->query_result; + } + if($query_id) + { + $result = @mysql_num_rows($query_id); + return $result; + } + else + { + return false; + } + } + function sql_affectedrows() + { + if($this->db_connect_id) + { + $result = @mysql_affected_rows($this->db_connect_id); + return $result; + } + else + { + return false; + } + } + function sql_numfields($query_id = 0) + { + if(!$query_id) + { + $query_id = $this->query_result; + } + if($query_id) + { + $result = @mysql_num_fields($query_id); + return $result; + } + else + { + return false; + } + } + function sql_fieldname($offset, $query_id = 0) + { + if(!$query_id) + { + $query_id = $this->query_result; + } + if($query_id) + { + $result = @mysql_field_name($query_id, $offset); + return $result; + } + else + { + return false; + } + } + function sql_fieldtype($offset, $query_id = 0) + { + if(!$query_id) + { + $query_id = $this->query_result; + } + if($query_id) + { + $result = @mysql_field_type($query_id, $offset); + return $result; + } + else + { + return false; + } + } + function sql_fetchrow($query_id = 0) + { + if(!$query_id) + { + $query_id = $this->query_result; + } + if($query_id) + { + $this->row[$query_id] = @mysql_fetch_array($query_id, MYSQL_ASSOC); + return $this->row[$query_id]; + } + else + { + return false; + } + } + function sql_fetchrowset($query_id = 0) + { + if(!$query_id) + { + $query_id = $this->query_result; + } + if($query_id) + { + unset($this->rowset[$query_id]); + unset($this->row[$query_id]); + while($this->rowset[$query_id] = @mysql_fetch_array($query_id, MYSQL_ASSOC)) + { + $result[] = $this->rowset[$query_id]; + } + return $result; + } + else + { + return false; + } + } + function sql_fetchfield($field, $rownum = -1, $query_id = 0) + { + if(!$query_id) + { + $query_id = $this->query_result; + } + if($query_id) + { + if($rownum > -1) + { + $result = @mysql_result($query_id, $rownum, $field); + } + else + { + if(empty($this->row[$query_id]) && empty($this->rowset[$query_id])) + { + if($this->sql_fetchrow()) + { + $result = $this->row[$query_id][$field]; + } + } + else + { + if($this->rowset[$query_id]) + { + $result = $this->rowset[$query_id][$field]; + } + else if($this->row[$query_id]) + { + $result = $this->row[$query_id][$field]; + } + } + } + return $result; + } + else + { + return false; + } + } + function sql_rowseek($rownum, $query_id = 0){ + if(!$query_id) + { + $query_id = $this->query_result; + } + if($query_id) + { + $result = @mysql_data_seek($query_id, $rownum); + return $result; + } + else + { + return false; + } + } + function sql_nextid(){ + if($this->db_connect_id) + { + $result = @mysql_insert_id($this->db_connect_id); + return $result; + } + else + { + return false; + } + } + function sql_freeresult($query_id = 0){ + if(!$query_id) + { + $query_id = $this->query_result; + } + if($query_id) + { + $result = @mysql_free_result($query_id); + return $result; + } + else + { + return false; + } + } + function sql_error($query_id = 0) + { + $result["message"] = @mysql_error($this->db_connect_id); + $result["code"] = @mysql_errno($this->db_connect_id); + + return $result; + } + +} // class sql_db + +} // if ... define + +?>
\ No newline at end of file |