dbh = @sqlite_open($dbpath.$dbname); if ( ! $this->dbh ) { $this->print_error("Error","
    Error establishing a database!
  1. Are you sure you have the correct path?
  2. Are you sure that you have typed the correct database instance name?
  3. Are you sure that the database is installed?
"); } } // ================================================================== // Select a DB instance (if another one needs to be selected) function select($dbpath, $dbname) { $this->db($dbpath, $dbname); } // ==================================================================== // Format a string correctly for safe insert under all PHP conditions function escape($str) { return str_replace("'","''",str_replace("''","'",stripslashes($str))); } // ================================================================== // Print SQL/DB error. function print_error($title = "SQL/DB Error", $str = "") { // All erros go to the global error array $EZSQL_ERROR.. global $EZSQL_ERROR; // If no error string then you're SOL if ( !$str ) { $str = "An error occured, quick go tell someone!"; } // Log this error to the global array.. $EZSQL_ERROR[] = array ( "query" => $this->last_query, "error_str" => $str ); // Is error output turned on or not.. if ( $this->show_errors ) { // If there is an error then take note of it print "
"; print "$title -- "; print "[$str]"; print "
"; } else { return false; } } // ================================================================== // Turn error handling on or off.. function show_errors() { $this->show_errors = true; } function hide_errors() { $this->show_errors = false; } // ================================================================== // Kill cached query results function flush() { // Get rid of these $this->last_result = null; $this->col_info = null; $this->last_query = null; } // ================================================================== // Basic Query - see docs for more detail function query($query) { // For reg expressions $query = trim($query); // Flush cached values.. $this->flush(); // Log how the function was called $this->func_call = "\$db->query(\"$query\")"; // Keep track of the last query for debug.. $this->last_query = $query; if(!sqlite_complete($query)){ $this->print_error("Invalid Query String Format",$query); return false; } // Perform the query via std mysql_query function.. $handle = @sqlite_exec($query,$this->dbh); $this->result = sqlite_fetch_array($handle)?true:false; $this->num_queries++; // If there was an insert, delete or update see how many rows were affected // (Also, If there there was an insert take note of the insert_id $query_type = array("insert","delete","update","replace"); // loop through the above array foreach ( $query_type as $word ) { // This is true if the query starts with insert, delete or update if ( preg_match("/^$word\s+/i",$query) ) { $this->rows_affected = sqlite_changes($handle); // This gets the insert ID if ( $word == "insert" || $word == "replace" ) { $this->insert_id = sqlite_last_insert_rowid($this->dbh); // If insert id then return it - true evaluation return $this->insert_id; } // Set to false if there was no insert id $this->result = false; } } if ( ! $handle ) { // If there is an error then take note of it.. if ( $php_errormsg ) { $this->print_error($php_errormsg,$query); } else { $this->print_error("Invalid Query",$query); } } else { // In other words if this was a select statement.. if ( $this->result ) { // ======================================================= // Take note of column info $i=0; foreach(@sqlite_fetch_field_array($handle) as $name) { $this->col_info[$i++]->name = $name; } // ======================================================= // Store Query Results $i=0; foreach ( @sqlite_fetch_array($handle) as $rowarr ) { $j=0; foreach ( @sqlite_fetch_field_array($handle) as $field ) { $row->$field = $rowarr[$j++]; } $this->last_result[$i++] = $row; } // Log number of rows the query returned $this->num_rows = $i; // If debug ALL queries $this->debug_all ? $this->debug() : null ; // If there were results then return true for $db->query if ( $i ) { return true; } else { return false; } } else { // If debug ALL queries $this->debug_all ? $this->debug() : null ; // Update insert etc. was good.. return true; } } } // ================================================================== // Get one variable from the DB - see docs for more detail function get_var($query=null,$x=0,$y=0) { // Log how the function was called $this->func_call = "\$db->get_var(\"$query\",$x,$y)"; // If there is a query then perform it if not then use cached results.. if ( $query ) { $this->query($query); } // Extract var out of cached results based x,y vals if ( $this->last_result[$y] ) { $values = array_values(get_object_vars($this->last_result[$y])); } // If there is a value return it else return null return (isset($values[$x]) && $values[$x]!=='')?$values[$x]:null; } // ================================================================== // Get one row from the DB - see docs for more detail function get_row($query=null,$output=OBJECT,$y=0) { // Log how the function was called $this->func_call = "\$db->get_row(\"$query\",$output,$y)"; // If there is a query then perform it if not then use cached results.. if ( $query ) { $this->query($query); } // If the output is an object then return object using the row offset.. if ( $output == OBJECT ) { return $this->last_result[$y]?$this->last_result[$y]:null; } // If the output is an associative array then return row as such.. elseif ( $output == ARRAY_A ) { return $this->last_result[$y]?get_object_vars($this->last_result[$y]):null; } // If the output is an numerical array then return row as such.. elseif ( $output == ARRAY_N ) { return $this->last_result[$y]?array_values(get_object_vars($this->last_result[$y])):null; } // If invalid output type was specified.. else { $this->print_error(" \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N"); } } // ================================================================== // Function to get 1 column from the cached result set based in X index // se docs for usage and info function get_col($query=null,$x=0) { // If there is a query then perform it if not then use cached results.. if ( $query ) { $this->query($query); } // Extract the column values for ( $i=0; $i < count($this->last_result); $i++ ) { $new_array[$i] = $this->get_var(null,$x,$i); } return $new_array; } // ================================================================== // Return the the query as a result set - see docs for more details function get_results($query=null, $output = OBJECT) { // Log how the function was called $this->func_call = "\$db->get_results(\"$query\", $output)"; // If there is a query then perform it if not then use cached results.. if ( $query ) { $this->query($query); } // Send back array of objects. Each row is an object if ( $output == OBJECT ) { return $this->last_result; } elseif ( $output == ARRAY_A || $output == ARRAY_N ) { if ( $this->last_result ) { $i=0; foreach( $this->last_result as $row ) { $new_array[$i] = get_object_vars($row); if ( $output == ARRAY_N ) { $new_array[$i] = array_values($new_array[$i]); } $i++; } return $new_array; } else { return null; } } } // ================================================================== // Function to get column meta data info pertaining to the last query // see docs for more info and usage function get_col_info($info_type="name",$col_offset=-1) { if ( $this->col_info ) { if ( $col_offset == -1 ) { $i=0; foreach($this->col_info as $col ) { $new_array[$i] = $col->{$info_type}; $i++; } return $new_array; } else { return $this->col_info[$col_offset]->{$info_type}; } } } // ================================================================== // Dumps the contents of any input variable to screen in a nicely // formatted and easy to understand way - any type: Object, Var or Array function vardump($mixed='') { echo "

"; echo "
";

			if ( ! $this->vardump_called )
			{
				echo "ezSQL (v".EZSQL_VERSION.") Variable Dump..\n\n";
			}

			$var_type = gettype ($mixed);
			print_r(($mixed?$mixed:"No Value / False"));
			echo "\n\nType: " . ucfirst($var_type) . "\n";
			echo "Last Query [$this->num_queries]: ".($this->last_query?$this->last_query:"NULL")."\n";
			echo "Last Function Call: " . ($this->func_call?$this->func_call:"None")."\n";
			echo "Last Rows Returned: ".count($this->last_result)."\n";
			echo "
".$this->donation(); echo "\n


"; $this->vardump_called = true; } // Alias for the above function function dumpvar($mixed) { $this->vardump($mixed); } // ================================================================== // Displays the last query string that was sent to the database & a // table listing results (if there were any). // (abstracted into a seperate file to save server overhead). function debug() { echo "
"; // Only show ezSQL credits once.. if ( ! $this->debug_called ) { echo "ezSQL (v".EZSQL_VERSION.") Debug..

\n"; } echo "Query [$this->num_queries] -- "; echo "[$this->last_query]

"; echo "Query Result.."; echo "

"; if ( $this->col_info ) { // ===================================================== // Results top rows echo ""; echo ""; for ( $i=0; $i < count($this->col_info); $i++ ) { echo ""; } echo ""; // ====================================================== // print main results if ( $this->last_result ) { $i=0; foreach ( $this->get_results(null,ARRAY_N) as $one_row ) { $i++; echo ""; foreach ( $one_row as $item ) { echo ""; } echo ""; } } // if last result else { echo ""; } echo "
(row){$this->col_info[$i]->type} {$this->col_info[$i]->max_length}
{$this->col_info[$i]->name}
$i$item
No Results
"; } // if col_info else { echo "No Results"; } echo "
".$this->donation()."
"; $this->debug_called = true; } // ======================================================= // Naughty little function to ask for some remuniration! function donation() { return "If ezSQL has helped make a donation!?   [ go on! you know you want to! ]"; } } #$db = new db( EZSQL_DB_PATH, EZSQL_DB_NAME ); ?>