"Error", 2 => "Warning", 4 => "Parsing Error", 8 => "Notice", 16 => "Core Error", 32 => "Core Warning", 64 => "Compile Error", 128 => "Compile Warning", 256 => "User Error", 512 => "User Warning", 1024=> "User Notice", 2048=> "E_ALL", 2049=> "PHP5 E_STRICT" ); $str = sprintf("[%s]\n%s:\t%s\nFile:\t\t'%s'\nLine:\t\t%s\n\n", date('d-m-Y H:i:s'),(isset($errortype[@$errno])?$errortype[@$errno]:('Unknown '.$errno)),@$errstr,@$errfile,@$errline); if (error_reporting() != 0) { @fwrite($f, $str); if (@$errno == 2 && isset($already_sent) && !$already_sent==true){ $error = ''."\n"; $error .= 'An Warning Type error appeared. The error is logged into the log file.'."\n"; $error .= ''."\n"; $already_sent = true; echo $error; } } } if ($debug_to_file){ $old_error_handler = set_error_handler("KT_ErrorHandler"); } class MySqlConnection { /* // The 'var' keyword is deprecated in PHP5 ... we will define these variables at runtime. var $isOpen; var $hostname; var $database; var $username; var $password; var $timeout; var $connectionId; var $error; */ function MySqlConnection($ConnectionString, $Timeout, $Host, $DB, $UID, $Pwd) { $this->isOpen = false; $this->timeout = $Timeout; $this->error = ''; if( $Host ) { $this->hostname = $Host; } elseif( ereg("host=([^;]+);", $ConnectionString, $ret) ) { $this->hostname = $ret[1]; } if( $DB ) { $this->database = $DB; } elseif( ereg("db=([^;]+);", $ConnectionString, $ret) ) { $this->database = $ret[1]; } if( $UID ) { $this->username = $UID; } elseif( ereg("uid=([^;]+);", $ConnectionString, $ret) ) { $this->username = $ret[1]; } if( $Pwd ) { $this->password = $Pwd; } elseif( ereg("pwd=([^;]+);", $ConnectionString, $ret) ) { $this->password = $ret[1]; } } function Open() { $this->connectionId = mysql_connect($this->hostname, $this->username, $this->password); if (isset($this->connectionId) && $this->connectionId && is_resource($this->connectionId)) { $this->isOpen = ($this->database == "") ? true : mysql_select_db($this->database, $this->connectionId); } else { $this->isOpen = false; } } function TestOpen() { return ($this->isOpen) ? '' : $this->HandleException(); } function Close() { if (is_resource($this->connectionId) && $this->isOpen) { if (mysql_close($this->connectionId)) { $this->isOpen = false; unset($this->connectionId); } } } function GetTables($table_name = '') { $xmlOutput = ""; if ($this->isOpen && isset($this->connectionId) && is_resource($this->connectionId)){ // 1. mysql_list_tables and mysql_tablename are deprecated in PHP5 // 2. For backward compatibility GetTables don't have any parameters if ($table_name === ''){ $table_name = @$_POST['Database']; } $sql = ' SHOW TABLES FROM ' . $table_name; $results = mysql_query($sql, $this->connectionId) or $this->HandleException(); $xmlOutput = ""; // Columns are referenced by index, so Schema and // Catalog must be specified even though they are not supported $xmlOutput .= 'TABLE_CATALOG'; // column 0 (zero-based) $xmlOutput .= 'TABLE_SCHEMA'; // column 1 $xmlOutput .= 'TABLE_NAME'; // column 2 $xmlOutput .= ""; if (is_resource($results) && mysql_num_rows($results) > 0){ while ($row = mysql_fetch_array($results)){ $xmlOutput .= '' . $row[0]. ''; } } $xmlOutput .= ""; } return $xmlOutput; } function GetViews() { // not supported return ""; } function GetProcedures() { // not supported return ""; } function GetColumnsOfTable($TableName) { $xmlOutput = ""; $query = "DESCRIBE $TableName"; $result = mysql_query($query) or $this->HandleException(); if ($result) { $xmlOutput = ""; // Columns are referenced by index, so Schema and // Catalog must be specified even though they are not supported $xmlOutput .= "TABLE_CATALOG"; // column 0 (zero-based) $xmlOutput .= "TABLE_SCHEMA"; // column 1 $xmlOutput .= "TABLE_NAME"; // column 2 $xmlOutput .= "COLUMN_NAME"; $xmlOutput .= "DATA_TYPE"; $xmlOutput .= "IS_NULLABLE"; $xmlOutput .= "COLUMN_SIZE"; $xmlOutput .= ""; // The fields returned from DESCRIBE are: Field, Type, Null, Key, Default, Extra while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $xmlOutput .= ""; // Separate type from size. Format is: type(size) if (ereg("(.*)\\((.*)\\)", $row["Type"], $ret)) { $type = $ret[1]; $size = $ret[2]; } else { $type = $row["Type"]; $size = ""; } // MySQL sets nullable to "YES" or "", so we need to set "NO" $null = $row["Null"]; if ($null == "") $null = "NO"; $xmlOutput .= "" . $row["Field"] . ""; $xmlOutput .= "" . $type . ""; $xmlOutput .= "" . $null . ""; $xmlOutput .= "" . $size . ""; } mysql_free_result($result); $xmlOutput .= ""; } return $xmlOutput; } function GetParametersOfProcedure($ProcedureName, $SchemaName, $CatalogName) { // not supported on MySQL return ''; } function ExecuteSQL($aStatement, $MaxRows) { if ( get_magic_quotes_gpc() ) { $aStatement = stripslashes( $aStatement ) ; } $xmlOutput = ""; $result = mysql_query($aStatement) or $this->HandleException(); if (isset($result) && is_resource($result)) { $xmlOutput = ""; $fieldCount = mysql_num_fields($result); for ($i=0; $i < $fieldCount; $i++) { $meta = mysql_fetch_field($result); if ($meta) { $xmlOutput .= 'type; $xmlOutput .= '" max_length="' . $meta->max_length; $xmlOutput .= '" table="' . $meta->table; $xmlOutput .= '" not_null="' . $meta->not_null; $xmlOutput .= '" numeric="' . $meta->numeric; $xmlOutput .= '" unsigned="' . $meta->unsigned; $xmlOutput .= '" zerofill="' . $meta->zerofill; $xmlOutput .= '" primary_key="' . $meta->primary_key; $xmlOutput .= '" multiple_key="'. $meta->multiple_key; $xmlOutput .= '" unique_key="' . $meta->unique_key; $xmlOutput .= '">' . $meta->name; $xmlOutput .= ''; } } $xmlOutput .= ""; $row = mysql_fetch_assoc($result); for ($i=0; $row && ($i < $MaxRows); $i++) { $xmlOutput .= ""; foreach ($row as $key => $value) { $xmlOutput .= ""; $xmlOutput .= htmlspecialchars($value); $xmlOutput .= ""; } $xmlOutput .= ""; $row = mysql_fetch_assoc($result); } mysql_free_result($result); $xmlOutput .= ""; } return $xmlOutput; } function GetProviderTypes() { return ''; } function ExecuteSP($aProcStatement, $TimeOut, $Parameters) { return ''; } function ReturnsResultSet($ProcedureName) { return ''; } function SupportsProcedure() { return ''; } /* * HandleException added by InterAKT for ease in database translation answer */ function HandleException() { global $debug_to_file, $f; $this->error = create_error(' MySQL Error#: '. ((int)mysql_errno()) . "\n\n".mysql_error()); log_messages($this->error); die($this->error.''); } function GetDatabaseList() { $xmlOutput = 'NAME'; if (isset($this->connectionId) && is_resource($this->connectionId)){ $dbList = mysql_list_dbs($this->connectionId); while ($row = mysql_fetch_object($dbList)) { $xmlOutput .= '' . $row->Database . ''; } }else{ $this->error = CONN_NOT_OPEN_GET_DB_LIST; return $this->error; } $xmlOutput .= ''; return $xmlOutput; } function GetPrimaryKeysOfTable($TableName) { $xmlOutput = ''; $query = "DESCRIBE $TableName"; $result = mysql_query($query) or $this->HandleException(); if ($result) { $xmlOutput = ''; // Columns are referenced by index, so Schema and // Catalog must be specified even though they are not supported $xmlOutput .= 'TABLE_CATALOG'; // column 0 (zero-based) $xmlOutput .= 'TABLE_SCHEMA'; // column 1 $xmlOutput .= 'TABLE_NAME'; // column 2 $xmlOutput .= 'COLUMN_NAME'; $xmlOutput .= 'DATA_TYPE'; $xmlOutput .= 'IS_NULLABLE'; $xmlOutput .= 'COLUMN_SIZE'; $xmlOutput .= ''; // The fields returned from DESCRIBE are: Field, Type, Null, Key, Default, Extra while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { if (strtoupper($row['Key']) == 'PRI'){ $xmlOutput .= ''; // Separate type from size. Format is: type(size) if (ereg("(.*)\\((.*)\\)", $row['Type'], $ret)) { $type = $ret[1]; $size = $ret[2]; } else { $type = $row['Type']; $size = ''; } // MySQL sets nullable to "YES" or "", so we need to set "NO" $null = $row['Null']; if ($null == '') $null = 'NO'; $xmlOutput .= '' . $row['Field'] . ''; $xmlOutput .= '' . $type . ''; $xmlOutput .= '' . $null . ''; $xmlOutput .= '' . $size . ''; } } mysql_free_result($result); $xmlOutput .= ''; } return $xmlOutput; } } // class MySqlConnection ?>