array( "mysql" => "CREATE TABLE IF NOT EXISTS", "pgsql" => "CREATE TABLE IF NOT EXISTS", "sqlite" => "CREATE TABLE IF NOT EXISTS", ), "delete" => array( "mysql" => "DELETE", "pgsql" => "DELETE", "sqlite" => "DELETE", ), "find" => array( "mysql" => "LOCATE( %string%, %substring% )", "pgsql" => "POSITION( %substring% in %string% )", "sqlite" => "INSTR( %string%, %substring% )", ), "select" => array( "mysql" => "SELECT", "pgsql" => "SELECT", "sqlite" => "SELECT", ), "update" => array( "mysql" => "UPDATE", "pgsql" => "UPDATE", "sqlite" => "UPDATE", ), ); public $comparisons = array( "equal" => array( "mysql" => "=", "pgsql" => "=", "sqlite" => "=", ), "less than" => array( "mysql" => "<", "pgsql" => "<", "sqlite" => "<", ), "more than" => array( "mysql" => ">", "pgsql" => ">", "sqlite" => ">", ), "not" => array( "mysql" => "!", "pgsql" => "!", "sqlite" => "!", ), "not equal" => array( "mysql" => "!=", "pgsql" => "!=", "sqlite" => "!=", ), ); public $data_types = array( "bool" => array( "mysql" => "BOOL", "pgsql" => "BOOL", "sqlite" => "BOOL", ), "int" => array( "mysql" => "INT", "pgsql" => "INT", "sqlite" => "INT", ), "string" => array( "mysql" => "VARCHAR", "pgsql" => "VARCHAR", "sqlite" => "VARCHAR", ), "text" => array( "mysql" => "TEXT", "pgsql" => "TEXT", "sqlite" => "TEXT", ), ); public $specials = array( "id" => array( "mysql" => "NOT NULL AUTO_INCREMENT PRIMARY KEY", "pgsql" => "SERIAL PRIMARY KEY", "sqlite" => "SERIAL PRIMARY KEY", ), "key" => array( "mysql" => "KEY", "pgsql" => "KEY", "sqlite" => "KEY", ), "auto increment" => array( "mysql" => "AUTO_INCREMENT", "pgsql" => "AUTO_INCREMENT", "sqlite" => "AUTO_INCREMENT", ), "not null" => array( "mysql" => "NOT NULL", "pgsql" => "NOT NULL", "sqlite" => "NOT NULL", ), "null" => array( "mysql" => "NULL", "pgsql" => "NULL", "sqlite" => "NULL", ), "unique" => array( "mysql" => "CONSTRAINT %constraint_name% UNIQUE ( %field_names% )", "pgsql" => "UNIQUE", "sqlite" => "UNIQUE", ), ); public $wraps = array( "close" => array( "mysql" => "`", "mssql" => "]", "pgsql" => "\"", "sqlite" => "\"", ), "open" => array( "mysql" => "`", "mssql" => "[", "pgsql" => "\"", "sqlite" => "\"", ), ); public function find( $string, $substring ) { $dbtype = DBTYPE; $id_close = $this->wraps["close"][$dbtype]; $id_open = $this->wraps["open"][$dbtype]; $find_string = $this->actions["find"][$dbtype]; $find_string = str_replace( "%string%", $string, $find_string ); $find_string = str_replace( "%substring%", $substring, $find_string ); return $find_string; } public function table( $table_name, $fields, $attributes ) { $dbtype = DBTYPE; $id_close = $this->wraps["close"][$dbtype]; $id_open = $this->wraps["open"][$dbtype]; $query = "{$this->actions["create"][$dbtype]} {$table_name} ("; foreach( $fields as $id => $type ) { $query .= "{$id} {$this->data_types[$type][$dbtype]}"; foreach( $attributes[$id] as $attribute ) { $attribute_string = $this->specials["$attribute"][$dbtype]; if( $attribute == "unique" && $dbtype == "mysql" ) { continue; } if( ! strpos( $attribute_string, "%table_name%" ) === FALSE ) { $attribute_string = str_replace( "%table_name%", $table_name, $attribute_string ); } if( ! strpos( $attribute_string, "%fields%" ) === FALSE ) { $fields_string = ""; foreach( $fields as $field ) { $fields_string .= "{$id_open}field{$id_close},"; } $fields_string = substr( $fields_string, 0, -1 ); $attribute_string = str_replace( "%fields%", $fields_string, $attribute_string ); } $query .= " {$attribute_string}"; } $query .= ","; } if( $dbtype == "mysql" ) { $constraint_name = ""; $id_close = $this->wraps["close"][$dbtype]; $id_open = $this->wraps["open"][$dbtype]; $fields_string = ""; $unique_string = ""; foreach( $attributes as $id => $attributes ) { if( in_array( "unique", $attributes ) ) { if( $unique_string == "" ) { $unique_string = $this->specials["unique"] . ","; } $fields_string .= "{$id_open}{$id}{$id_close},"; } } $unique_string = str_replace( "%constraint_name%", $constraint_name, $unique_string ); $unique_string = str_replace( "%field_names%", $fields_string, $unique_string ); $query .= $unique_string; } $query = substr( $query, 0, -1 ); $query .= ");"; return( $query ); } public function tables( $tables ) { $query = ""; foreach( $tables as $table_name => $table_data ) { $query .= $this->table( $table_name, $table_data["fields"], $table_data["attributes"] ); } return( $query ); } } ?>