dbHost = $conf["mysql"]["host"]; //$this->dbName = $conf["mysql"]["database"]; $this->dbUser = $conf["mysql"]["admin_user"]; $this->dbPass = $conf["mysql"]["admin_password"]; $this->dbCharset = $conf["mysql"]["charset"]; //$this->connect(); } // error handler function updateError($location) { $this->errorNumber = mysqli_errno($this->linkId); $this->errorMessage = mysqli_error($this->linkId); $this->errorLocation = $location; if($this->errorNumber && $this->show_error_messages) { echo '
'.$this->errorLocation.'
'.$this->errorMessage; flush(); } } function connect() { if(!$this->linkId) { $this->linkId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass); if(!$this->linkId) { $this->updateError('DB::connect()
mysqli_connect'); return false; } $this->queryId = @mysqli_query($this->linkId, 'SET NAMES '.$this->dbCharset); } return true; } function query($queryString) { if(!$this->connect()) { return false; } if($this->dbName != '') { if(!mysqli_select_db($this->linkId, $this->dbName)) { $this->updateError('DB::connect()
mysqli_select_db'); return false; } } $this->queryId = @mysqli_query($this->linkId, $queryString); $this->updateError('DB::query('.$queryString.')
mysqli_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 = mysqli_fetch_assoc($this->queryId); $this->updateError('DB::nextRecord()
mysqli_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 mysqli_num_rows($this->queryId); } function affectedRows() { return mysqli_affected_rows($this->linkId); } // returns mySQL insert id function insertID() { return mysqli_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 mysqli_real_escape_string($this->linkId, $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; } $tables = $this->queryAllRecords("SHOW TABLES FROM `$database_name`"); $tb_names = array(); if(is_array($tables) && !empty($tables)){ for($i = 0; $i < sizeof($tables); $i++){ $tb_names[$i] = $tables[$i]['Tables_in_'.$database_name]; } } /* $result = mysqli_query("SHOW TABLES FROM `$database_name`"); $tb_names = array(); for ($i = 0; $i < mysqli_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; } } 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; } } } ?>