dbHost = $conf["mysql"]["host"]; //$this->dbName = $conf["mysql"]["database"]; $this->dbUser = $conf["mysql"]["admin_user"]; $this->dbPass = $conf["mysql"]["admin_password"]; //$this->connect(); } // error handler function updateError($location) { $this->errorNumber = mysql_errno(); $this->errorMessage = mysql_error(); $this->errorLocation = $location; if($this->errorNumber && $this->show_error_messages) { echo('
'.$this->errorLocation.'
'.$this->errorMessage); flush(); } } function connect() { if($this->linkId == 0) { $this->linkId = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass); if(!$this->linkId) { $this->updateError('DB::connect()
mysql_connect'); return false; } } return true; } function query($queryString) { if(!$this->connect()) { return false; } if($this->dbName != '') { if(!mysql_select_db($this->dbName, $this->linkId)) { $this->updateError('DB::connect()
mysql_select_db'); return false; } } $this->queryId = @mysql_query($queryString, $this->linkId); $this->updateError('DB::query('.$queryString.')
mysql_query'); if(!$this->queryId) { return false; } $this->currentRow = 0; return $this->queryId; } // returns all records in an array function queryAllRecords($queryString) { if(!$this->query($queryString)) { return false; } $ret = array(); while($line = $this->nextRecord()) { $ret[] = $line; } return $ret; } // returns one record in an array function queryOneRecord($queryString) { if(!$this->query($queryString) || $this->numRows() == 0) { return false; } return $this->nextRecord(); } // returns the next record in an array function nextRecord() { $this->record = mysql_fetch_assoc($this->queryId); $this->updateError('DB::nextRecord()
mysql_fetch_array'); if(!$this->record || !is_array($this->record)) { return false; } $this->currentRow++; return $this->record; } // returns number of rows returned by the last select query function numRows() { return mysql_num_rows($this->queryId); } function affectedRows() { return mysql_affected_rows($this->linkId); } // returns mySQL insert id function insertID() { return mysql_insert_id($this->linkId); } // Check der variablen // deprecated, now use quote function check($formfield) { return $this->quote($formfield); } // Check der variablen function quote($formfield) { return addslashes($formfield); } // Check der variablen function unquote($formfield) { return stripslashes($formfield); } function toLower($record) { if(is_array($record)) { foreach($record as $key => $val) { $key = strtolower($key); $out[$key] = $val; } } return $out; } function insert($tablename,$form,$debug = 0) { if(is_array($form)){ foreach($form as $key => $value) { $sql_key .= "$key, "; $sql_value .= "'".$this->check($value)."', "; } $sql_key = substr($sql_key,0,strlen($sql_key) - 2); $sql_value = substr($sql_value,0,strlen($sql_value) - 2); $sql = "INSERT INTO $tablename (" . $sql_key . ") VALUES (" . $sql_value .")"; if($debug == 1) echo "SQL-Statement: ".$sql."

"; $this->query($sql); if($debug == 1) echo "mySQL Error Message: ".$this->errorMessage; } } function update($tablename,$form,$bedingung,$debug = 0) { if(is_array($form)){ foreach($form as $key => $value) { $insql .= "$key = '".$this->check($value)."', "; } $insql = substr($insql,0,strlen($insql) - 2); $sql = "UPDATE $tablename SET " . $insql . " WHERE $bedingung"; if($debug == 1) echo "SQL-Statement: ".$sql."

"; $this->query($sql); if($debug == 1) echo "mySQL Error Message: ".$this->errorMessage; } } function closeConn() { } function freeResult() { } function delete() { } function Transaction($action) { //action = begin, commit oder rollback } /* $columns = array(action => add | alter | drop name => Spaltenname name_new => neuer Spaltenname, nur bei 'alter' belegt type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob typeValue => Wert z.B. bei Varchar defaultValue => Default Wert notNull => true | false autoInc => true | false option => unique | primary | index) */ function createTable($table_name,$columns) { $index = ""; $sql = "CREATE TABLE $table_name ("; foreach($columns as $col){ $sql .= $col["name"]." ".$this->mapType($col["type"],$col["typeValue"])." "; if($col["defaultValue"] != "") { if($col["defaultValue"] == "NULL" or $col["defaultValue"] == "NOT NULL") { $sql .= "DEFAULT ".$col["defaultValue"]." "; } else { $sql .= "DEFAULT '".$col["defaultValue"]."' "; } } elseif($col["defaultValue"] != false) { $sql .= "DEFAULT '' "; } if($col["defaultValue"] != "NULL" && $col["defaultValue"] != "NOT NULL") { if($col["notNull"] == true) { $sql .= "NOT NULL "; } else { $sql .= "NULL "; } } if($col["autoInc"] == true) $sql .= "auto_increment "; $sql.= ","; // key Definitionen if($col["option"] == "primary") $index .= "PRIMARY KEY (".$col["name"]."),"; if($col["option"] == "index") $index .= "INDEX (".$col["name"]."),"; if($col["option"] == "unique") $index .= "UNIQUE (".$col["name"]."),"; } $sql .= $index; $sql = substr($sql,0,-1); $sql .= ")"; $this->query($sql); return true; } /* $columns = array(action => add | alter | drop name => Spaltenname name_new => neuer Spaltenname, nur bei 'alter' belegt type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob typeValue => Wert z.B. bei Varchar defaultValue => Default Wert notNull => true | false autoInc => true | false option => unique | primary | index) */ function alterTable($table_name,$columns) { $index = ""; $sql = "ALTER TABLE $table_name "; foreach($columns as $col){ if($col["action"] == 'add') { $sql .= "ADD ".$col["name"]." ".$this->mapType($col["type"],$col["typeValue"])." "; } elseif ($col["action"] == 'alter') { $sql .= "CHANGE ".$col["name"]." ".$col["name_new"]." ".$this->mapType($col["type"],$col["typeValue"])." "; } elseif ($col["action"] == 'drop') { $sql .= "DROP ".$col["name"]." "; } if($col["action"] != 'drop') { if($col["defaultValue"] != "") $sql .= "DEFAULT '".$col["defaultValue"]."' "; if($col["notNull"] == true) { $sql .= "NOT NULL "; } else { $sql .= "NULL "; } if($col["autoInc"] == true) $sql .= "auto_increment "; $sql.= ","; // key Definitionen if($col["option"] == "primary") $index .= "PRIMARY KEY (".$col["name"]."),"; if($col["option"] == "index") $index .= "INDEX (".$col["name"]."),"; if($col["option"] == "unique") $index .= "UNIQUE (".$col["name"]."),"; } } $sql .= $index; $sql = substr($sql,0,-1); //die($sql); $this->query($sql); return true; } function dropTable($table_name) { $this->check($table_name); $sql = "DROP TABLE '". $table_name."'"; return $this->query($sql); } // gibt Array mit Tabellennamen zur�ck function getTables($database_name = '') { if($database_name == ''){ $database_name = $this->dbName; } $result = mysql_query("SHOW TABLES FROM `$database_name`"); for ($i = 0; $i < mysql_num_rows($result); $i++) { $tb_names[$i] = mysql_tablename($result, $i); } return $tb_names; } // gibt Feldinformationen zur Tabelle zur�ck /* $columns = array(action => add | alter | drop name => Spaltenname name_new => neuer Spaltenname, nur bei 'alter' belegt type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob typeValue => Wert z.B. bei Varchar defaultValue => Default Wert notNull => true | false autoInc => true | false option => unique | primary | index) */ function tableInfo($table_name) { global $go_api,$go_info; // Tabellenfelder einlesen if($rows = $go_api->db->queryAllRecords("SHOW FIELDS FROM ".$table_name)){ foreach($rows as $row) { $name = $row[0]; $default = $row[4]; $key = $row[3]; $extra = $row[5]; $isnull = $row[2]; $type = $row[1]; $column = array(); $column["name"] = $name; //$column["type"] = $type; $column["defaultValue"] = $default; if(stristr($key,"PRI")) $column["option"] = "primary"; if(stristr($isnull,"YES")) { $column["notNull"] = false; } else { $column["notNull"] = true; } if($extra == 'auto_increment') $column["autoInc"] = true; // Type in Metatype umsetzen if(stristr($type,"int(")) $metaType = 'int32'; if(stristr($type,"bigint")) $metaType = 'int64'; if(stristr($type,"char")) { $metaType = 'char'; $tmp_typeValue = explode('(',$type); $column["typeValue"] = substr($tmp_typeValue[1],0,-1); } if(stristr($type,"varchar")) { $metaType = 'varchar'; $tmp_typeValue = explode('(',$type); $column["typeValue"] = substr($tmp_typeValue[1],0,-1); } if(stristr($type,"text")) $metaType = 'text'; if(stristr($type,"double")) $metaType = 'double'; if(stristr($type,"blob")) $metaType = 'blob'; $column["type"] = $metaType; $columns[] = $column; } return $columns; } else { return false; } //$this->createTable('tester',$columns); /* $result = mysql_list_fields($go_info["server"]["db_name"],$table_name); $fields = mysql_num_fields ($result); $i = 0; $table = mysql_field_table ($result, $i); while ($i < $fields) { $name = mysql_field_name ($result, $i); $type = mysql_field_type ($result, $i); $len = mysql_field_len ($result, $i); $flags = mysql_field_flags ($result, $i); print_r($flags); $columns = array(name => $name, type => "", defaultValue => "", isnull => 1, option => ""); $returnvar[] = $columns; $i++; } */ } function mapType($metaType,$typeValue) { global $go_api; $metaType = strtolower($metaType); switch ($metaType) { case 'int16': return 'smallint'; break; case 'int32': return 'int'; break; case 'int64': return 'bigint'; break; case 'double': return 'double'; break; case 'char': return 'char'; break; case 'varchar': if($typeValue < 1) die("Datenbank Fehler: F�r diesen Datentyp ist eine L�ngenangabe notwendig."); return 'varchar('.$typeValue.')'; break; case 'text': return 'text'; break; case 'blob': return 'blob'; break; } } } ?>