Posts retrieval * Dates / Time of posts * Others which we look forward to debug later :D */ // ================================================================== // Author: Justin Vincent (justin@visunet.ie) // Web: http://php.justinvincent.com // Name: ezSQL // Desc: Class to make it very easy to deal with MS SQL database connections. // // N.B. ezSQL was converted for use with MS SQL // by Tom De Bruyne (tom@challenge.be). // // !! IMPORTANT !! // // Please send me a mail telling me what you think of ezSQL // and what your using it for!! Cheers. [ justin@visunet.ie ] // // ================================================================== // User Settings -- CHANGE HERE ini_set ('mssql.textlimit','2147483647'); ini_set ('mssql.textsize','2147483647'); define("EZSQL_DB_USER", "tretinoin_wpuser"); // <-- MS SQL Server db user define("EZSQL_DB_PASSWORD", "83h93hdi."); // <-- MS SQL Server db password define("EZSQL_DB_NAME", "tretinoin_wordpress"); // <-- MS SQL Server db pname define("EZSQL_DB_HOST", "lamp2win"); // <-- MS SQL Server server host // ================================================================== // ezSQL Constants define("EZSQL_VERSION","1.26"); define("OBJECT","OBJECT",true); define("ARRAY_A","ARRAY_A",true); define("ARRAY_N","ARRAY_N",true); // ================================================================== // The Main Class class W3_Db_Driver { var $debug_called; var $vardump_called; var $show_errors = false; var $num_queries = 0; var $debug_all = false; var $last_query; var $col_info; var $suppress_errors = false; var $last_error = ''; var $queries; var $prefix = ''; var $ready = false; var $posts; var $users; var $categories; var $post2cat; var $comments; var $links; var $options; var $postmeta; var $usermeta; var $terms; var $term_taxonomy; var $term_relationships; var $tables = array('users', 'usermeta', 'posts', 'categories', 'post2cat', 'comments', 'links', 'link2cat', 'options', 'postmeta', 'terms', 'term_taxonomy', 'term_relationships'); var $charset; var $collate; // ================================================================== // DB Constructor - connects to the server and selects a database function W3_Db_Driver($dbuser, $dbpassword, $dbname, $dbhost) { $this->dbh = mssql_connect($dbhost, $dbuser, $dbpassword); if ( ! $this->dbh ) { $this->print_error("
    Error establishing a database connection!
  1. Are you sure you have the correct user/password?
  2. Are you sure that you have typed the correct hostname?
  3. Are you sure that the database server is running?
"); } $this->select($dbname); } // ================================================================== // Select a DB (if another one needs to be selected) function select($db) { mssql_select_db ($db); } // ================================================================== // Basic Query - see docs for more detail function query($query) { $query = trim($query); $query = str_replace('`',"'",$query); $query = str_replace('\012',"\n",$query); $query = str_replace('\015',"\r",$query); //$query = str_replace("\n",'',$query); //$query = str_replace("\r",'',$query); //$query = $this->escape($query); //$query = str_replace('"','\"',$query); //$query = str_replace("'","\'",$query); if(substr($query,0,7) == 'SELECT '){ dbug($query,'SELECT : ORIGINAL QUERY ::::::: ','orange'); $query_arr = explode('LIMIT',$query); if($query_arr[0] AND $query_arr[1]){ $query_one = str_replace('SELECT ','',$query_arr[0]); $top_arr = explode(' ',$query_arr[1]); if($top_arr[1] && $top_arr[2]){ $query = 'SELECT TOP '.$top_arr[2].' '.$query_one; }else{ $query = 'SELECT TOP '.$top_arr[1].' '.$query_one; } /* // TO BE DEVELOP //LIMIT 1, 3 SELECT * FROM ( SELECT TOP 3 * FROM (SELECT TOP (1+3) * FROM wp_posts WHERE 1=1 AND post_type = 'post' AND (post_status = 'publish' OR post_status = 'private') ORDER BY post_date DESC) AS table1 ORDER BY post_date ASC ) AS table2 ORDER BY post_date DESC */ //pre($query_arr); //exit(); } if(substr($query,0,23) == "SELECT TOP 1 comment_ID"){ $query = str_replace(' = ',' = ',$query); } /* DUMP DIRTY SWEPT TEST */ $query = str_replace('wp_posts.','',$query); /* hacks for query; - SELECT * FROM wp_posts WHERE (post_type = 'page' AND post_status = 'publish') ORDER BY menu_order, post_title ASC - SELECT * FROM wp_posts WHERE 1=1 AND post_type = 'page' AND (post_status = 'publish' OR post_status = 'future' OR post_status = 'draft' OR post_status = 'pending' OR post_status = 'private') ORDER BY menu_order,post_title asc notes; somehow Wordpress developer create this 'post_title' date-type as 'text' in database. the post_title should be varchar since the amount of character in title is generally less then 255 char. and in ms-sql, text cannot be sorted. so this is a big mistake. haihhh... */ $pattern = '/post_title asc/is'; $replacement = 'cast(post_title as varchar(500)) ASC'; $query = preg_replace($pattern, $replacement, $query); /* hacks for query; - SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM wp_posts WHERE post_type = 'post' ORDER BY post_date DESC notes; this is one another hacks for SELECT DISTINCT call. The above query tries to sort by the column post_date. Because the keyword DISTINCT is also specified, column post_date must appear in the SELECT list expected return; - SELECT DISTINCT post_date, YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM wp_posts WHERE post_type = 'post' ORDER BY post_date DESC */ if(substr($query,0,15) == "SELECT DISTINCT"){ $string = $query; $pattern = '/SELECT DISTINCT (.*)? ORDER BY (.*)? (asc|desc)/i'; $replacement = 'cast(post_title as varchar(500)) ASC'; preg_match_all($pattern, $string, $result); $order_by_col = $result[2][0]; $col_calls = $result[1][0]; $order_by_prop = $result[3][0]; $query = 'SELECT DISTINCT '.$order_by_col.', '.$col_calls.' ORDER BY '.$order_by_col.' '.$order_by_prop; } /* hacks for query; - SELECT user_id FROM wp_usermeta WHERE meta_key = 'wp_user_level' AND meta_value != '0' notes; replace != into NOT LIKE expected return; - SELECT user_id FROM wp_usermeta WHERE meta_key = 'wp_user_level' AND NOT meta_value LIKE '0' */ $pattern = "/ (?:[a-z][a-z0-9_]*)? \!\= /is"; preg_match_all($pattern, $query, $result); $result_arr = $result[0]; $query = str_replace('!=','',$query); foreach($result_arr as $result_item){ $result_item = str_replace('!=','',$result_item); $result_item = trim($result_item); $query = str_replace($result_item,' NOT '.$result_item.' LIKE ',$query); } /* hacks for; - SQL have 'GROUP BY' - SELECT DISTINCT post_date, YEAR(post_date) AS year, MONTH(post_date) AS month, count(ID) as posts FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC */ if (preg_match("/GROUP BY/i", $query)) { $pattern = '/SELECT (.*) GROUP BY (.*)? ORDER BY (.*)/i'; preg_match($pattern, $string, $output); $query0 = 'SELECT '.$output[1].' ORDER BY '.$output[3]; } $query = str_replace('SQL_CALC_FOUND_ROWS',' ',$query); if (preg_match("/SELECT FOUND_ROWS()/i", $query)) { $last_query = $this->last_query; $last_query_one_arr = explode('TOP',$last_query); $last_query_two = trim($last_query_one_arr[1]); $last_query_three_arr = explode(' ',$last_query_two); $last_query_four = str_replace($last_query_three_arr[0],'',$last_query_two); $query = 'SELECT '.$last_query_four; } dbug($query,'SELECT : MODDED QUERY :::::::: ','orange'); }elseif(substr($query,0,7) == 'INSERT '){ dbug($query,'INSERT : ORIGINAL QUERY ::::::::: ','purple'); $pattern = '/INSERT INTO (.*)?\((.*)\).*?VALUES.*?\((.*)\)/is'; preg_match_all($pattern, $query, $output); $insert_table = trim($output[1][0]); $insert_cols = trim($output[2][0]); $insert_values = trim($output[3][0]); /* STRIP QUOTE FROM COLS NAME */ $insert_cols = str_replace("'",'',$insert_cols); $query = $this->prepare($query); /* PROCESS THE $insert_values. NEED TO REPLACE THE INNER QUOTES */ preg_match_all("/([0-9]+|\'(.*?)\'[ ]*?),/is", $insert_values.',', $output); $insert_values_arr = array(); //PREPARE THE NEW FRESH VALUES foreach($output[0] as $insert_values_item){ if(substr(trim($insert_values_item),0,1) == "'"){ $insert_values_item = substr($insert_values_item,1); // TAKE OUT THE FIRST 1 CHAR, WHICH IS QUOTE } $insert_values_item = trim($insert_values_item); // TRIM THE WHITESPACE if(substr(trim($insert_values_item),-1) == ","){ $insert_values_item = substr($insert_values_item,0,-1); // TAKE OUT THE LAST 1 CHAR, WHICH IS COMMA } if(substr(trim($insert_values_item),-1) == "'"){ $insert_values_item = substr($insert_values_item,0,-1); // TAKE OUT THE LAST 1 CHAR, WHICH IS QUOTE } $insert_values_item = str_replace("'","''",$insert_values_item); // NOW WE PUT THE EXTRA QUOTE ON IT $insert_values_item = trim($insert_values_item); // TRIM THE WHITESPACE $insert_values_item = "'".$insert_values_item."'"; // WRAP THE VALUES WITH OUR SINGLE-QUOTE $insert_values_arr[] = $insert_values_item; } $insert_values = implode(',',$insert_values_arr); /* CONSTRUCT NEW INSERT CALL */ $query = 'INSERT INTO '.$insert_table.' ('.$insert_cols.') VALUES ('.$insert_values.');'; dbug($query,'INSERT : MODDED QUERY :::::::::: ','purple'); }elseif(substr($query,0,7) == 'UPDATE '){ dbug($query,'UPDATE : ORIGINAL QUERY ::::::::: ','blue'); $pattern = '/UPDATE ([A-Za-z0-9_-]+) SET (.*)? WHERE (.*)?/is'; preg_match_all($pattern, $query, $output); $update_table = trim($output[1][0]); $update_values = trim($output[2][0]); $update_where = trim($output[3][0]); preg_match_all("/(.*?)[ *]?=[ *]?(\'(.*?)\'|[0-9]+),/is", $update_values.',', $output_vals); $update_vals_colname = $output_vals[1]; $update_vals_values = $output_vals[2]; $update_vals_colname_mod = array(); foreach($update_vals_colname as $update_vals_colname_item){ $update_vals_colname_item = str_replace("'",'',$update_vals_colname_item); // GREEDY REPLACE ALL QUOTES. NO QUOTES ALLOWED IN COL NAME $update_vals_colname_item = trim($update_vals_colname_item); // TRIM THE WHITESPACE $update_vals_colname_mod[] = $update_vals_colname_item; } $update_vals_values_mod = array(); foreach($update_vals_values as $update_vals_values_item){ if(substr(trim($update_vals_values_item),0,1) == "'"){ $update_vals_values_item = substr($update_vals_values_item,1); // TAKE OUT THE FIRST 1 CHAR, WHICH IS QUOTE } if(substr(trim($update_vals_values_item),-1) == "'"){ $update_vals_values_item = substr($update_vals_values_item,0,-1); // TAKE OUT THE LAST 1 CHAR, WHICH IS QUOTE } $update_vals_values_item = trim($update_vals_values_item); // TRIM THE WHITESPACE $update_vals_values_item = str_replace("'","''",$update_vals_values_item); // ADD ADDITIONAL QUOTE TO ESCAPE IT IN MSSQL $update_vals_values_mod[] = $update_vals_values_item; } $update_values_modded = array_combine($update_vals_colname_mod,$update_vals_values_mod); $update_values = ''; $update_values_prepare_arr = ''; $update_values_item = ''; foreach($update_values_modded as $update_values_item_colname => $update_values_item_value){ $update_values_prepare_arr[] = $update_values_item_colname." = '".$update_values_item_value."'"; } $update_values = implode(',',$update_values_prepare_arr); /* CONSTRUCT NEW UPDATE CALL */ $query = 'UPDATE '.$update_table.' SET '.$update_values.' WHERE '.$update_where.';'; dbug($query,'UPDATE : MODDED QUERY :::::::::: ','blue'); }elseif(substr($query,0,7) == 'DELETE '){ dbug($query,'DELETE','orange'); }elseif(substr($query,0,7) == 'CREATE '){ $query_two = str_replace('auto_increment','IDENTITY(1,1)',$query); $query_two = str_replace('tinytext','text',$query_two); $query_two = str_replace('longtext','text',$query_two); $query_two = str_replace('mediumtext','text',$query_two); $query_two = str_replace('unsigned ','',$query_two); $query_three = preg_replace('/bigint\(\d+\)/i','int',$query_two); $query_three = preg_replace('/int\(\d+\)/i','int',$query_three); $query_four_arr = explode('PRIMARY KEY',$query_three); $query_five = $query_four_arr[0].' '; $query_six = $query_four_arr[1]; $query_seven_arr = explode('),',$query_six); $query_eight_arr = explode('(',$query); $query_nine = trim($query_eight_arr[0]); $query_ten = str_replace($query_nine,'',$query_five); $table_name = trim(str_replace('CREATE TABLE','',$query_nine)); $create_table_header = " IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[tretinoin_wpuser].[".$table_name."]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) DROP TABLE [tretinoin_wpuser].[".$table_name."] GO CREATE TABLE [tretinoin_wpuser].[".$table_name."]"; $create_table_header_simple = "CREATE TABLE [tretinoin_wpuser].[".$table_name."] "; $query = $create_table_header_simple . $query_ten . ' PRIMARY KEY ' . $query_seven_arr[0] .'))'; dbug($query,'CREATE','purple'); }elseif(substr($query,0,5) == 'SHOW '){ $query = str_replace('SHOW TABLES;','',$query); dbug($query,'SHOW','yellow'); }else{ dbug($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; // Perform the query via std mssql_query function.. if(substr($query,0,7) == 'SELECT '){ $this->result_check = @mssql_query($query, $this->dbh); }elseif(substr($query,0,7) == 'INSERT '){ }elseif(substr($query,0,7) == 'UPDATE '){ $this->result_check = @mssql_query($query, $this->dbh); }elseif(substr($query,0,7) == 'DELETE '){ }elseif(substr($query,0,7) == 'CREATE '){ }elseif(substr($query,0,5) == 'SHOW '){ } // Unfortunately, PHP fuctions for MS SQL currently don't offer a decent way // to retrieve errors from MS SQL // Make sure not to run a query between the actual query and this one ! $get_errorcode = "SELECT @@ERROR as errorcode"; $error_res = @mssql_query($get_errorcode, $this->dbh); $errorcode = @mssql_result($error_res, 0, "errorcode"); // ERROR LIST // 402 : The data types text and varchar are incompatible in the equal to operator. // 306 : The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator. if ($errorcode == '402') { $query_two = str_replace(' = ',' LIKE ',$query); /* NEED MORE IMPROVEMENT HERE */ }else{ $query_two = $query; } dbug($query,$errorcode,'green'); $this->result = @mssql_query($query_two, $this->dbh); $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 last OID $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 = @mssql_rows_affected ($this->dbh); // This gets the insert ID if ( $word == "insert" || $word == "replace" ) { $get_last_ident = "SELECT @@IDENTITY as id"; $last_res = @mssql_query($get_last_ident, $this->dbh); $this->insert_id = @mssql_result($last_res, 0, "id"); // 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 ($errorcode <> 0) { // there is an error $this->print_error(); } else { // ======================================================= // Take note of column info $i=0; while ($i < @mssql_num_fields($this->result)) { $this->col_info[$i]->name = @mssql_field_name($this->result,$i); $this->col_info[$i]->type = @mssql_field_type($this->result,$i); $this->col_info[$i]->size = @mssql_field_length($this->result,$i); $i++; } // ======================================================= // Store Query Results $i=0; while ( $row_arr = @mssql_fetch_array($this->result) ) { $row = array_to_object($row_arr); $this->last_result[$i] = $row; // Store relults as an objects within main array $i++; } if($i == 0){ $this->last_result = array(); } //pre($this->last_result); // Log number of rows the query returned $this->num_rows = $i; //} @mssql_free_result($this->result); // If this was a select.. if ( preg_match("/^(select|show|desc)\s+/i",$query) ) { // 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; } } } // ==================================================================== // Format a string correctly for safe insert under all PHP conditions function escape($str) { // This deals with quote escaping //$str = str_replace("'","''",$str); //$str = str_replace("\'","'",$str); //$str = mysql_real_escape_string($str); //$str = str_replace("'", "''", $str); //$str = addslashes($str); //dbug($str,'ESCAPE RUN TWICE','red'); // These values need to be escaped for ms sql $escape = array ( "\n"=>"\\\\012","\r"=>"\\\\015"); // Firstly unescape /* foreach ( $escape as $match => $replace ) { $str = str_replace($match,$replace,$str); } */ return $str; } // ================================================================== // Print SQL/DB error. function print_error($str = "") { // All erros go to the global error array $EZSQL_ERROR.. global $EZSQL_ERROR; // if no special error, take last mssql error if ( !$str ) $str = mssql_get_last_message(); // 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 "SQL/DB Error -- "; print "[".$this->last_query."]"; print "[$str]"; print "
"; */ dbug($this->last_query.'
'.$str,'ERROR','red'); return false; } 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; } // ================================================================== // 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); } if($i == 0){ $new_array = array(); } 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 ) { $out = get_object_vars($this->last_result); 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! ]"; } /** * Sets the table prefix for the WordPress . * * Also allows for the CUSTOM_USER_TABLE and CUSTOM_USER_META_TABLE to * override the WordPress users and usersmeta tables. * * @since 2.5.0 * * @param string $prefix Alphanumeric name for the new prefix. * @return string Old prefix */ function set_prefix($prefix) { if ( preg_match('|[^a-z0-9_]|i', $prefix) ) return new WP_Error('invalid_db_prefix', /*WP_I18N_DB_BAD_PREFIX*/'Invalid database prefix'/*/WP_I18N_DB_BAD_PREFIX*/); $old_prefix = $this->prefix; $this->prefix = $prefix; foreach ( (array) $this->tables as $table ) $this->$table = $this->prefix . $table; if ( defined('CUSTOM_USER_TABLE') ) $this->users = CUSTOM_USER_TABLE; if ( defined('CUSTOM_USER_META_TABLE') ) $this->usermeta = CUSTOM_USER_META_TABLE; return $old_prefix; } /** * Whether to suppress database errors. * * @param unknown_type $suppress * @return unknown */ function suppress_errors( $suppress = true ) { $errors = $this->suppress_errors; $this->suppress_errors = $suppress; return $errors; } /** * Escapes content by reference for insertion into the database, for security * * @since 2.3.0 * * @param string $s */ function escape_by_ref(&$s) { $s = $this->escape($s); } /** * Generic function to determine if a database supports a particular feature * @param string $db_cap the feature * @param false|string|resource $dbh_or_table the databaese (the current database, the database housing the specified table, or the database of the mysql resource) * @return bool */ function has_cap( $db_cap ) { return false; } /** * Insert an array of data into a table. * * @since 2.5.0 * * @param string $table WARNING: not sanitized! * @param array $data Should not already be SQL-escaped * @return mixed Results of $this->query() */ function insert($table, $data) { $data = add_magic_quotes($data); $fields = array_keys($data); return $this->query("INSERT INTO $table (`" . implode('`,`',$fields) . "`) VALUES ('".implode("','",$data)."')"); } /** * Prepares a SQL query for safe use, using sprintf() syntax. * * @link http://php.net/sprintf See for syntax to use for query string. * @since 2.3.0 * * @param null|string $args If string, first parameter must be query statement * @param mixed $args,... If additional parameters, they will be set inserted into the query. * @return null|string Sanitized query string */ function prepare($args=null) { if ( is_null( $args ) ) return; $args = func_get_args(); $query = array_shift($args); $query = str_replace("'%s'", '%s', $query); // in case someone mistakenly already singlequoted it $query = str_replace('"%s"', '%s', $query); // doublequote unquoting $query = str_replace('%s', "'%s'", $query); // quote the strings array_walk($args, array(&$this, 'escape_by_ref')); return @vsprintf($query, $args); } /** * Update a row in the table with an array of data. * * @since 2.5.0 * * @param string $table WARNING: not sanitized! * @param array $data Should not already be SQL-escaped * @param array $where A named array of WHERE column => value relationships. Multiple member pairs will be joined with ANDs. WARNING: the column names are not currently sanitized! * @return mixed Results of $this->query() */ function update($table, $data, $where){ $data = add_magic_quotes($data); $bits = $wheres = array(); foreach ( (array) array_keys($data) as $k ) $bits[] = "`$k` = '$data[$k]'"; if ( is_array( $where ) ) foreach ( $where as $c => $v ){ $v = str_replace("'","'",$v); //$wheres[] = "$c = '" . $this->escape( $v ) . "'"; $wheres[] = "$c = '" . $v . "'"; } else return false; return $this->query( "UPDATE $table SET " . implode( ', ', $bits ) . ' WHERE ' . implode( ' AND ', $wheres ) ); } /** * Whether or not MySQL database is minimal required version. * * @since 2.5.0 * @uses $wp_version * * @return WP_Error */ function check_database_version() { global $wp_version; // Make sure the server has MySQL 4.0 /* if ( version_compare($this->db_version(), '4.0.0', '<') ) return new WP_Error('database_version',sprintf(__('ERROR: WordPress %s requires MySQL 4.0.0 or higher'), $wp_version)); */ } } // automatically create a new $db object //$wpdb = new db(EZSQL_DB_USER, EZSQL_DB_PASSWORD, EZSQL_DB_NAME, EZSQL_DB_HOST); function array_to_object($array = array()) { if (!empty($array)) { $data = false; foreach ($array as $akey => $aval) { if(!is_numeric($akey)){ $data -> {$akey} = trim($aval); } } return $data; } return false; } function pre($sting_to_pre = '',$ob=false){ if($sting_to_pre){ if($ob){ ob_start(); echo '
';
		        print_r($sting_to_pre);
		        echo '
'; $the_return = ob_get_contents(); ob_end_clean(); return $the_return; }else{ echo '
';
			print_r($sting_to_pre);
			echo '
'; } } } function dbug($val,$prepend='',$prepend_color='red'){ /* $fp = fopen('E:\wwwusr\vhosts\tretinoin.dev.lamp2win.com\httpdocs\debug\log.txt', 'a'); fwrite($fp, ''.$prepend.' '.$val."\n"); fclose($fp); */ } ?>