WordPress.org

Make WordPress Core

Ticket #16764: 16764.2.patch

File 16764.2.patch, 27.5 KB (added by hakre, 4 years ago)

wpdb with interface, no base class, variables sorted by access-type, single file

  • wp-includes/wp-db.php

     
    3535define( 'ARRAY_N', 'ARRAY_N' ); 
    3636 
    3737/** 
     38 * WordPress Database Access Abstraction Object Methods 
     39 * 
     40 * @package WordPress 
     41 * @subpackage Database 
     42 * @since 3.2 
     43 */ 
     44Interface WP_Db_Methods { 
     45        public function set_prefix( $prefix, $set_table_names = true ); 
     46        public function set_blog_id( $blog_id, $site_id = 0 ); 
     47        public function get_blog_prefix( $blog_id = null ); 
     48        public function tables( $scope = 'all', $prefix = true, $blog_id = 0 ); 
     49        public function escape( $data ); 
     50        public function escape_by_ref( &$string ); 
     51        public function prepare( $query = null ); 
     52        public function show_errors( $show = true ); 
     53        public function hide_errors(); 
     54        public function suppress_errors( $suppress = true ); 
     55        public function query( $query ); 
     56        public function insert( $table, $data, $format = null ); 
     57        public function replace( $table, $data, $format = null ); 
     58        public function update( $table, $data, $where, $format = null, $where_format = null ); 
     59        public function get_var( $query = null, $column = 0, $row = 0 ); 
     60        public function get_row( $query = null, $output = null, $row = 0 ); 
     61        public function get_col( $query = null , $column = 0 ); 
     62        public function get_results( $query = null, $output = null ); 
     63        public function get_col_info( $info_type = 'name', $col_offset = null ); 
     64        public function has_cap( $feature ); 
     65        public function db_version(); 
     66} 
     67 
     68 
     69/** 
    3870 * WordPress Database Access Abstraction Object 
    3971 * 
    4072 * It is possible to replace this class with your own 
    4173 * by setting the $wpdb global variable in wp-content/db.php 
    42  * file with your class. You can name it wpdb also, since 
    43  * this file will not be included, if the other file is 
    44  * available. 
     74 * file with your class. You can not name it wpdb, because this  
     75 * file will be included. 
    4576 * 
    4677 * @link http://codex.wordpress.org/Function_Reference/wpdb_Class 
    4778 * 
     
    4980 * @subpackage Database 
    5081 * @since 0.71 
    5182 */ 
    52 class wpdb { 
     83class wpdb implements WP_Db_Methods { 
     84         
     85        /* 
     86         * private variables {@todo two execptions: $prefix and $base_prefix}} 
     87         */ 
    5388 
    5489        /** 
    5590         * Whether to show SQL/DB errors 
     
    5893         * @access private 
    5994         * @var bool 
    6095         */ 
    61         var $show_errors = false; 
     96        private $show_errors = false; 
    6297 
    6398        /** 
    6499         * Whether to suppress errors during the DB bootstrapping. 
     
    67102         * @since 2.5.0 
    68103         * @var bool 
    69104         */ 
    70         var $suppress_errors = false; 
     105        private $suppress_errors = false; 
    71106 
    72107        /** 
    73108         * The last error during query. 
     
    77112         * @access private 
    78113         * @var string 
    79114         */ 
    80         var $last_error = ''; 
     115        private $last_error = ''; 
    81116 
    82117        /** 
    83118         * Amount of queries made 
     
    86121         * @access private 
    87122         * @var int 
    88123         */ 
    89         var $num_queries = 0; 
     124        private $num_queries = 0; 
    90125 
    91126        /** 
    92127         * Count of rows returned by previous query 
     
    95130         * @access private 
    96131         * @var int 
    97132         */ 
    98         var $num_rows = 0; 
     133        private $num_rows = 0; 
    99134 
    100135        /** 
    101136         * Count of affected rows by previous query 
     
    104139         * @access private 
    105140         * @var int 
    106141         */ 
    107         var $rows_affected = 0; 
     142        private $rows_affected = 0; 
    108143 
    109144        /** 
    110          * The ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). 
    111          * 
    112          * @since 0.71 
    113          * @access public 
    114          * @var int 
    115          */ 
    116         var $insert_id = 0; 
    117  
    118         /** 
    119145         * Saved result of the last query made 
    120146         * 
    121147         * @since 1.2.0 
    122148         * @access private 
    123149         * @var array 
    124150         */ 
    125         var $last_query; 
     151        private $last_query; 
    126152 
    127153        /** 
    128154         * Results of the last query made 
     
    131157         * @access private 
    132158         * @var array|null 
    133159         */ 
    134         var $last_result; 
     160        private $last_result; 
    135161 
    136162        /** 
    137163         * Saved info on the table column 
     
    140166         * @access private 
    141167         * @var array 
    142168         */ 
    143         var $col_info; 
     169        private $col_info; 
    144170 
    145171        /** 
    146172         * Saved queries that were executed 
     
    149175         * @access private 
    150176         * @var array 
    151177         */ 
    152         var $queries; 
     178        private $queries; 
    153179 
    154180        /** 
     181         * Timer start value, for debugging purposes. 
     182         * 
     183         * @since 1.5.0 
     184         * @access private 
     185         * @var float 
     186         * @see timer_stop() 
     187         * @see timer_start() 
     188         */ 
     189        private $time_start; 
     190 
     191        /** 
    155192         * WordPress table prefix 
    156193         * 
    157194         * You can set this to have multiple WordPress installations 
    158195         * in a single database. The second reason is for possible 
    159196         * security precautions. 
    160197         * 
     198         * @todo see Ticket #16756 {@link http://core.trac.wordpress.org/attachment/ticket/16756}} 
     199         * 
    161200         * @since 0.71 
    162201         * @access private 
    163202         * @var string 
    164203         */ 
    165         var $prefix = ''; 
     204        public $prefix = ''; 
    166205 
    167206        /** 
    168207         * Whether the database queries are ready to start executing. 
     
    171210         * @access private 
    172211         * @var bool 
    173212         */ 
    174         var $ready = false; 
     213        private $ready = false; 
    175214 
    176215        /** 
    177          * {@internal Missing Description}} 
    178          * 
    179          * @since 3.0.0 
    180          * @access public 
    181          * @var int 
    182          */ 
    183         var $blogid = 0; 
    184  
    185         /** 
    186          * {@internal Missing Description}} 
    187          * 
    188          * @since 3.0.0 
    189          * @access public 
    190          * @var int 
    191          */ 
    192         var $siteid = 0; 
    193  
    194         /** 
    195216         * List of WordPress per-blog tables 
    196217         * 
    197218         * @since 2.5.0 
     
    199220         * @see wpdb::tables() 
    200221         * @var array 
    201222         */ 
    202         var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 
     223        private $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 
    203224                'terms', 'term_taxonomy', 'term_relationships', 'commentmeta' ); 
    204225 
    205226        /** 
     
    212233         * @see wpdb::tables() 
    213234         * @var array 
    214235         */ 
    215         var $old_tables = array( 'categories', 'post2cat', 'link2cat' ); 
     236        private $old_tables = array( 'categories', 'post2cat', 'link2cat' ); 
    216237 
    217238        /** 
    218239         * List of WordPress global tables 
     
    222243         * @see wpdb::tables() 
    223244         * @var array 
    224245         */ 
    225         var $global_tables = array( 'users', 'usermeta' ); 
     246        private $global_tables = array( 'users', 'usermeta' ); 
    226247 
    227248        /** 
    228249         * List of Multisite global tables 
     
    232253         * @see wpdb::tables() 
    233254         * @var array 
    234255         */ 
    235         var $ms_global_tables = array( 'blogs', 'signups', 'site', 'sitemeta', 
     256        private $ms_global_tables = array( 'blogs', 'signups', 'site', 'sitemeta', 
    236257                'sitecategories', 'registration_log', 'blog_versions' ); 
    237258 
    238259        /** 
     260         * Database Username 
     261         * 
     262         * @since 2.9.0 
     263         * @access private 
     264         * @var string 
     265         */ 
     266        private $dbuser; 
     267 
     268        /* 
     269         * public variables 
     270         */ 
     271 
     272        /** 
     273         * The ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). 
     274         * 
     275         * @since 0.71 
     276         * @access public 
     277         * @var int 
     278         */ 
     279        public $insert_id = 0; 
     280 
     281        /** 
     282         * {@internal Missing Description}} 
     283         * 
     284         * @since 3.0.0 
     285         * @access public 
     286         * @var int 
     287         */ 
     288        public $blogid = 0; 
     289 
     290        /** 
     291         * {@internal Missing Description}} 
     292         * 
     293         * @since 3.0.0 
     294         * @access public 
     295         * @var int 
     296         */ 
     297        public $siteid = 0; 
     298 
     299        /** 
    239300         * WordPress Comments table 
    240301         * 
    241302         * @since 1.5.0 
    242303         * @access public 
    243304         * @var string 
    244305         */ 
    245         var $comments; 
     306        public $comments; 
    246307 
    247308        /** 
    248309         * WordPress Comment Metadata table 
     
    251312         * @access public 
    252313         * @var string 
    253314         */ 
    254         var $commentmeta; 
     315        public $commentmeta; 
    255316 
    256317        /** 
    257318         * WordPress Links table 
     
    260321         * @access public 
    261322         * @var string 
    262323         */ 
    263         var $links; 
     324        public $links; 
    264325 
    265326        /** 
    266327         * WordPress Options table 
     
    269330         * @access public 
    270331         * @var string 
    271332         */ 
    272         var $options; 
     333        public $options; 
    273334 
    274335        /** 
    275336         * WordPress Post Metadata table 
     
    278339         * @access public 
    279340         * @var string 
    280341         */ 
    281         var $postmeta; 
     342        public $postmeta; 
    282343 
    283344        /** 
    284345         * WordPress Posts table 
     
    287348         * @access public 
    288349         * @var string 
    289350         */ 
    290         var $posts; 
     351        public $posts; 
    291352 
    292353        /** 
    293354         * WordPress Terms table 
     
    296357         * @access public 
    297358         * @var string 
    298359         */ 
    299         var $terms; 
     360        public $terms; 
    300361 
    301362        /** 
    302363         * WordPress Term Relationships table 
     
    305366         * @access public 
    306367         * @var string 
    307368         */ 
    308         var $term_relationships; 
     369        public $term_relationships; 
    309370 
    310371        /** 
    311372         * WordPress Term Taxonomy table 
     
    314375         * @access public 
    315376         * @var string 
    316377         */ 
    317         var $term_taxonomy; 
     378        public $term_taxonomy; 
    318379 
    319380        /* 
    320381         * Global and Multisite tables 
     
    327388         * @access public 
    328389         * @var string 
    329390         */ 
    330         var $usermeta; 
     391        public $usermeta; 
    331392 
    332393        /** 
    333394         * WordPress Users table 
     
    336397         * @access public 
    337398         * @var string 
    338399         */ 
    339         var $users; 
     400        public $users; 
    340401 
    341402        /** 
    342403         * Multisite Blogs table 
     
    345406         * @access public 
    346407         * @var string 
    347408         */ 
    348         var $blogs; 
     409        public $blogs; 
    349410 
    350411        /** 
    351412         * Multisite Blog Versions table 
     
    354415         * @access public 
    355416         * @var string 
    356417         */ 
    357         var $blog_versions; 
     418        public $blog_versions; 
    358419 
    359420        /** 
    360421         * Multisite Registration Log table 
     
    363424         * @access public 
    364425         * @var string 
    365426         */ 
    366         var $registration_log; 
     427        public $registration_log; 
    367428 
    368429        /** 
    369430         * Multisite Signups table 
     
    372433         * @access public 
    373434         * @var string 
    374435         */ 
    375         var $signups; 
     436        public $signups; 
    376437 
    377438        /** 
    378439         * Multisite Sites table 
     
    381442         * @access public 
    382443         * @var string 
    383444         */ 
    384         var $site; 
     445        public $site; 
    385446 
    386447        /** 
    387448         * Multisite Sitewide Terms table 
     
    390451         * @access public 
    391452         * @var string 
    392453         */ 
    393         var $sitecategories; 
     454        public $sitecategories; 
    394455 
    395456        /** 
    396457         * Multisite Site Metadata table 
     
    399460         * @access public 
    400461         * @var string 
    401462         */ 
    402         var $sitemeta; 
     463        public $sitemeta; 
    403464 
    404465        /** 
    405466         * Format specifiers for DB columns. Columns not listed here default to %s. Initialized during WP load. 
     
    414475         * @access public 
    415476         * @var array 
    416477         */ 
    417         var $field_types = array(); 
     478        public $field_types = array(); 
    418479 
    419480        /** 
    420481         * Database table columns charset 
     
    423484         * @access public 
    424485         * @var string 
    425486         */ 
    426         var $charset; 
     487        public $charset; 
    427488 
    428489        /** 
    429490         * Database table columns collate 
     
    432493         * @access public 
    433494         * @var string 
    434495         */ 
    435         var $collate; 
     496        public $collate; 
    436497 
    437498        /** 
    438499         * Whether to use mysql_real_escape_string 
     
    441502         * @access public 
    442503         * @var bool 
    443504         */ 
    444         var $real_escape = false; 
     505        public $real_escape = false; 
    445506 
    446507        /** 
    447          * Database Username 
    448          * 
    449          * @since 2.9.0 
    450          * @access private 
    451          * @var string 
    452          */ 
    453         var $dbuser; 
    454  
    455         /** 
    456508         * A textual description of the last query/get_row/get_var call 
    457509         * 
    458510         * @since 3.0.0 
    459511         * @access public 
    460512         * @var string 
    461513         */ 
    462         var $func_call; 
     514        public $func_call; 
    463515 
    464516        /** 
    465517         * Connects to the database server and selects a database 
    466518         * 
    467          * PHP4 compatibility layer for calling the PHP5 constructor. 
    468          * 
    469          * @uses wpdb::__construct() Passes parameters and returns result 
    470          * @since 0.71 
    471          * 
    472          * @param string $dbuser MySQL database user 
    473          * @param string $dbpassword MySQL database password 
    474          * @param string $dbname MySQL database name 
    475          * @param string $dbhost MySQL database host 
    476          */ 
    477         function wpdb( $dbuser, $dbpassword, $dbname, $dbhost ) { 
    478                 return $this->__construct( $dbuser, $dbpassword, $dbname, $dbhost ); 
    479         } 
    480  
    481         /** 
    482          * Connects to the database server and selects a database 
    483          * 
    484          * PHP5 style constructor for compatibility with PHP5. Does 
    485          * the actual setting up of the class properties and connection 
     519         * The actual setting up of the class properties and connection 
    486520         * to the database. 
    487521         * 
    488522         * @link http://core.trac.wordpress.org/ticket/3354 
     
    493527         * @param string $dbname MySQL database name 
    494528         * @param string $dbhost MySQL database host 
    495529         */ 
    496         function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) { 
    497                 register_shutdown_function( array( &$this, '__destruct' ) ); 
     530        public function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) { 
     531                register_shutdown_function( array( $this, '__destruct' ) ); 
    498532 
    499                 if ( WP_DEBUG ) 
    500                         $this->show_errors(); 
    501  
    502533                $this->init_charset(); 
    503534 
    504535                $this->dbuser = $dbuser; 
     
    510541        } 
    511542 
    512543        /** 
    513          * PHP5 style destructor and will run when database object is destroyed. 
     544         * Destructor that will run when database object is destroyed. 
    514545         * 
     546         * Callback of register_shutdown_function 
     547         * 
    515548         * @see wpdb::__construct() 
    516549         * @since 2.0.8 
    517550         * @return bool true 
    518551         */ 
    519         function __destruct() { 
     552        public function __destruct() { 
    520553                return true; 
    521554        } 
    522555 
     
    525558         * 
    526559         * @since 3.1.0 
    527560         */ 
    528         function init_charset() { 
     561        private function init_charset() { 
    529562                if ( function_exists('is_multisite') && is_multisite() ) { 
    530563                        $this->charset = 'utf8'; 
    531564                        if ( defined( 'DB_COLLATE' ) && DB_COLLATE ) 
     
    549582         * @param string   $charset The character set (optional) 
    550583         * @param string   $collate The collation (optional) 
    551584         */ 
    552         function set_charset($dbh, $charset = null, $collate = null) { 
     585        private function set_charset($dbh, $charset = null, $collate = null) { 
    553586                if ( !isset($charset) ) 
    554587                        $charset = $this->charset; 
    555588                if ( !isset($collate) ) 
     
    575608         * @param string $prefix Alphanumeric name for the new prefix. 
    576609         * @return string|WP_Error Old prefix or WP_Error on error 
    577610         */ 
    578         function set_prefix( $prefix, $set_table_names = true ) { 
     611        public function set_prefix( $prefix, $set_table_names = true ) { 
    579612 
    580613                if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) 
    581614                        return new WP_Error('invalid_db_prefix', /*WP_I18N_DB_BAD_PREFIX*/'Invalid database prefix'/*/WP_I18N_DB_BAD_PREFIX*/); 
     
    614647         * @param int $site_id Optional. 
    615648         * @return string previous blog id 
    616649         */ 
    617         function set_blog_id( $blog_id, $site_id = 0 ) { 
     650        public function set_blog_id( $blog_id, $site_id = 0 ) { 
    618651                if ( ! empty( $site_id ) ) 
    619652                        $this->siteid = $site_id; 
    620653 
     
    640673         * @param int $blog_id Optional. 
    641674         * @return string Blog prefix. 
    642675         */ 
    643         function get_blog_prefix( $blog_id = null ) { 
     676        public function get_blog_prefix( $blog_id = null ) { 
    644677                if ( is_multisite() ) { 
    645678                        if ( null === $blog_id ) 
    646679                                $blog_id = $this->blogid; 
     
    681714         * @param int $blog_id Optional. The blog_id to prefix. Defaults to wpdb::$blogid. Used only when prefix is requested. 
    682715         * @return array Table names. When a prefix is requested, the key is the unprefixed table name. 
    683716         */ 
    684         function tables( $scope = 'all', $prefix = true, $blog_id = 0 ) { 
     717        public function tables( $scope = 'all', $prefix = true, $blog_id = 0 ) { 
    685718                switch ( $scope ) { 
    686719                        case 'all' : 
    687720                                $tables = array_merge( $this->global_tables, $this->tables ); 
     
    743776         * @param resource $dbh Optional link identifier. 
    744777         * @return null Always null. 
    745778         */ 
    746         function select( $db, $dbh = null) { 
     779        private function select( $db, $dbh = null) { 
    747780                if ( is_null($dbh) ) 
    748781                        $dbh = $this->dbh; 
    749782 
     
    771804         * @param string $string 
    772805         * @return string 
    773806         */ 
    774         function _weak_escape( $string ) { 
     807        private function _weak_escape( $string ) { 
    775808                return addslashes( $string ); 
    776809        } 
    777810 
     
    786819         * @param  string $string to escape 
    787820         * @return string escaped 
    788821         */ 
    789         function _real_escape( $string ) { 
     822        private function _real_escape( $string ) { 
    790823                if ( $this->dbh && $this->real_escape ) 
    791824                        return mysql_real_escape_string( $string, $this->dbh ); 
    792825                else 
     
    804837         * @param  string|array $data 
    805838         * @return string|array escaped 
    806839         */ 
    807         function _escape( $data ) { 
     840        private function _escape( $data ) { 
    808841                if ( is_array( $data ) ) { 
    809842                        foreach ( (array) $data as $k => $v ) { 
    810843                                if ( is_array($v) ) 
     
    828861         * @param string|array $data to escape 
    829862         * @return string|array escaped as query safe string 
    830863         */ 
    831         function escape( $data ) { 
     864        public function escape( $data ) { 
    832865                if ( is_array( $data ) ) { 
    833866                        foreach ( (array) $data as $k => $v ) { 
    834867                                if ( is_array( $v ) ) 
     
    851884         * @param string $string to escape 
    852885         * @return void 
    853886         */ 
    854         function escape_by_ref( &$string ) { 
     887        public function escape_by_ref( &$string ) { 
    855888                $string = $this->_real_escape( $string ); 
    856889        } 
    857890 
     
    891924         * @return null|false|string Sanitized query string, null if there is no query, false if there is an error and string 
    892925         *      if there was something to prepare 
    893926         */ 
    894         function prepare( $query = null ) { // ( $query, *$args ) 
     927        public function prepare( $query = null ) { // ( $query, *$args ) 
    895928                if ( is_null( $query ) ) 
    896929                        return; 
    897930 
     
    916949         * @param string $str The error to display 
    917950         * @return bool False if the showing of errors is disabled. 
    918951         */ 
    919         function print_error( $str = '' ) { 
     952        private function print_error( $str = '' ) { 
    920953                global $EZSQL_ERROR; 
    921954 
    922955                if ( !$str ) 
     
    9731006         * @param bool $show Whether to show or hide errors 
    9741007         * @return bool Old value for showing errors. 
    9751008         */ 
    976         function show_errors( $show = true ) { 
     1009        public function show_errors( $show = true ) { 
    9771010                $errors = $this->show_errors; 
    9781011                $this->show_errors = $show; 
    9791012                return $errors; 
     
    9891022         * 
    9901023         * @return bool Whether showing of errors was active 
    9911024         */ 
    992         function hide_errors() { 
     1025        public function hide_errors() { 
    9931026                $show = $this->show_errors; 
    9941027                $this->show_errors = false; 
    9951028                return $show; 
     
    10061039         * @param bool $suppress Optional. New value. Defaults to true. 
    10071040         * @return bool Old value 
    10081041         */ 
    1009         function suppress_errors( $suppress = true ) { 
     1042        public function suppress_errors( $suppress = true ) { 
    10101043                $errors = $this->suppress_errors; 
    10111044                $this->suppress_errors = (bool) $suppress; 
    10121045                return $errors; 
     
    10181051         * @since 0.71 
    10191052         * @return void 
    10201053         */ 
    1021         function flush() { 
     1054        private function flush() { 
    10221055                $this->last_result = array(); 
    10231056                $this->col_info    = null; 
    10241057                $this->last_query  = null; 
     
    10291062         * 
    10301063         * @since 3.0.0 
    10311064         */ 
    1032         function db_connect() { 
    1033                 global $db_list, $global_db_list; 
    1034  
     1065        private function db_connect() { 
    10351066                if ( WP_DEBUG ) { 
    10361067                        $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, true ); 
    10371068                } else { 
     
    10751106         * @param string $query Database query 
    10761107         * @return int|false Number of rows affected/selected or false on error 
    10771108         */ 
    1078         function query( $query ) { 
     1109        public function query( $query ) { 
    10791110                if ( ! $this->ready ) 
    10801111                        return false; 
    10811112 
     
    11571188         *      A format is one of '%d', '%s' (decimal number, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 
    11581189         * @return int|false The number of rows inserted, or false on error. 
    11591190         */ 
    1160         function insert( $table, $data, $format = null ) { 
     1191        public function insert( $table, $data, $format = null ) { 
    11611192                return $this->_insert_replace_helper( $table, $data, $format, 'INSERT' ); 
    11621193        } 
    11631194 
     
    11801211         *      A format is one of '%d', '%s' (decimal number, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 
    11811212         * @return int|false The number of rows affected, or false on error. 
    11821213         */ 
    1183         function replace( $table, $data, $format = null ) { 
     1214        public function replace( $table, $data, $format = null ) { 
    11841215                return $this->_insert_replace_helper( $table, $data, $format, 'REPLACE' ); 
    11851216        } 
    11861217 
     
    12011232         *      A format is one of '%d', '%s' (decimal number, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 
    12021233         * @return int|false The number of rows affected, or false on error. 
    12031234         */ 
    1204         function _insert_replace_helper( $table, $data, $format = null, $type = 'INSERT' ) { 
     1235        private function _insert_replace_helper( $table, $data, $format = null, $type = 'INSERT' ) { 
    12051236                if ( ! in_array( strtoupper( $type ), array( 'REPLACE', 'INSERT' ) ) ) 
    12061237                        return false; 
    12071238                $formats = $format = (array) $format; 
     
    12411272         * @param array|string $format_where Optional. An array of formats to be mapped to each of the values in $where. If string, that format will be used for all of the items in $where.  A format is one of '%d', '%s' (decimal number, string).  If omitted, all values in $where will be treated as strings. 
    12421273         * @return int|false The number of rows updated, or false on error. 
    12431274         */ 
    1244         function update( $table, $data, $where, $format = null, $where_format = null ) { 
     1275        public function update( $table, $data, $where, $format = null, $where_format = null ) { 
    12451276                if ( ! is_array( $data ) || ! is_array( $where ) ) 
    12461277                        return false; 
    12471278 
     
    12821313         * @since 0.71 
    12831314         * 
    12841315         * @param string|null $query Optional. SQL query. Defaults to null, use the result from the previous query. 
    1285          * @param int $x Optional. Column of value to return.  Indexed from 0. 
    1286          * @param int $y Optional. Row of value to return.  Indexed from 0. 
     1316         * @param int $column Optional. Column of value to return.  Indexed from 0. 
     1317         * @param int $row Optional. Row of value to return.  Indexed from 0. 
    12871318         * @return string|null Database query result (as string), or null on failure 
    12881319         */ 
    1289         function get_var( $query = null, $x = 0, $y = 0 ) { 
    1290                 $this->func_call = "\$db->get_var(\"$query\", $x, $y)"; 
     1320        public function get_var( $query = null, $column = 0, $row = 0 ) { 
     1321                $this->func_call = "\$db->get_var(\"$query\", $column, $row)"; 
    12911322                if ( $query ) 
    12921323                        $this->query( $query ); 
    12931324 
    12941325                // Extract var out of cached results based x,y vals 
    1295                 if ( !empty( $this->last_result[$y] ) ) { 
    1296                         $values = array_values( get_object_vars( $this->last_result[$y] ) ); 
     1326                if ( !empty( $this->last_result[$row] ) ) { 
     1327                        $values = array_values( get_object_vars( $this->last_result[$row] ) ); 
    12971328                } 
    12981329 
    12991330                // If there is a value return it else return null 
    1300                 return ( isset( $values[$x] ) && $values[$x] !== '' ) ? $values[$x] : null; 
     1331                return ( isset( $values[$column] ) && $values[$column] !== '' ) ? $values[$column] : null; 
    13011332        } 
    13021333 
    13031334        /** 
     
    13101341         * @param string|null $query SQL query. 
    13111342         * @param string $output Optional. one of ARRAY_A | ARRAY_N | OBJECT constants. Return an associative array (column => value, ...), 
    13121343         *      a numerically indexed array (0 => value, ...) or an object ( ->column = value ), respectively. 
    1313          * @param int $y Optional. Row to return. Indexed from 0. 
     1344         * @param int $row Optional. Row to return. Indexed from 0. 
    13141345         * @return mixed Database query result in format specifed by $output or null on failure 
    13151346         */ 
    1316         function get_row( $query = null, $output = OBJECT, $y = 0 ) { 
    1317                 $this->func_call = "\$db->get_row(\"$query\",$output,$y)"; 
     1347        public function get_row( $query = null, $output = null, $row = 0 ) { 
     1348                $this->func_call = "\$db->get_row(\"$query\",$output,$row)"; 
    13181349                if ( $query ) 
    13191350                        $this->query( $query ); 
    13201351                else 
    13211352                        return null; 
    13221353 
    1323                 if ( !isset( $this->last_result[$y] ) ) 
     1354                if ( !isset( $this->last_result[$row] ) ) 
    13241355                        return null; 
    13251356 
    1326                 if ( $output == OBJECT ) { 
    1327                         return $this->last_result[$y] ? $this->last_result[$y] : null; 
     1357                if ( null === $output || $output == OBJECT ) { 
     1358                        return $this->last_result[$row] ? $this->last_result[$row] : null; 
    13281359                } elseif ( $output == ARRAY_A ) { 
    1329                         return $this->last_result[$y] ? get_object_vars( $this->last_result[$y] ) : null; 
     1360                        return $this->last_result[$row] ? get_object_vars( $this->last_result[$row] ) : null; 
    13301361                } elseif ( $output == ARRAY_N ) { 
    1331                         return $this->last_result[$y] ? array_values( get_object_vars( $this->last_result[$y] ) ) : null; 
     1362                        return $this->last_result[$row] ? array_values( get_object_vars( $this->last_result[$row] ) ) : null; 
    13321363                } else { 
    13331364                        $this->print_error(/*WP_I18N_DB_GETROW_ERROR*/" \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N"/*/WP_I18N_DB_GETROW_ERROR*/); 
    13341365                } 
     
    13441375         * @since 0.71 
    13451376         * 
    13461377         * @param string|null $query Optional. SQL query. Defaults to previous query. 
    1347          * @param int $x Optional. Column to return. Indexed from 0. 
     1378         * @param int $column Optional. Column to return. Indexed from 0. 
    13481379         * @return array Database query result. Array indexed from 0 by SQL result row number. 
    13491380         */ 
    1350         function get_col( $query = null , $x = 0 ) { 
     1381        public function get_col( $query = null , $column = 0 ) { 
    13511382                if ( $query ) 
    13521383                        $this->query( $query ); 
    13531384 
    13541385                $new_array = array(); 
    13551386                // Extract the column values 
    13561387                for ( $i = 0, $j = count( $this->last_result ); $i < $j; $i++ ) { 
    1357                         $new_array[$i] = $this->get_var( null, $x, $i ); 
     1388                        $new_array[$i] = $this->get_var( null, $column, $i ); 
    13581389                } 
    13591390                return $new_array; 
    13601391        } 
     
    13721403         *      With OBJECT_K, return an associative array of row objects keyed by the value of each row's first column's value.  Duplicate keys are discarded. 
    13731404         * @return mixed Database query results 
    13741405         */ 
    1375         function get_results( $query = null, $output = OBJECT ) { 
     1406        public function get_results( $query = null, $output = null ) { 
    13761407                $this->func_call = "\$db->get_results(\"$query\", $output)"; 
    13771408 
    13781409                if ( $query ) 
     
    13811412                        return null; 
    13821413 
    13831414                $new_array = array(); 
    1384                 if ( $output == OBJECT ) { 
     1415                if ( $output === null || $output == OBJECT ) { 
    13851416                        // Return an integer-keyed array of row objects 
    13861417                        return $this->last_result; 
    13871418                } elseif ( $output == OBJECT_K ) { 
     
    14201451         * @param int $col_offset Optional. 0: col name. 1: which table the col's in. 2: col's max length. 3: if the col is numeric. 4: col's type 
    14211452         * @return mixed Column Results 
    14221453         */ 
    1423         function get_col_info( $info_type = 'name', $col_offset = -1 ) { 
     1454        public function get_col_info( $info_type = 'name', $col_offset = null ) { 
    14241455                if ( $this->col_info ) { 
    1425                         if ( $col_offset == -1 ) { 
     1456                        if ( $col_offset === null ) { 
    14261457                                $i = 0; 
    14271458                                $new_array = array(); 
    14281459                                foreach( (array) $this->col_info as $col ) { 
     
    14431474         * 
    14441475         * @return true 
    14451476         */ 
    1446         function timer_start() { 
    1447                 $mtime            = explode( ' ', microtime() ); 
    1448                 $this->time_start = $mtime[1] + $mtime[0]; 
     1477        private function timer_start() { 
     1478                $this->time_start = microtime( true ); 
    14491479                return true; 
    14501480        } 
    14511481 
     
    14561486         * 
    14571487         * @return int Total time spent on the query, in milliseconds 
    14581488         */ 
    1459         function timer_stop() { 
    1460                 $mtime      = explode( ' ', microtime() ); 
    1461                 $time_end   = $mtime[1] + $mtime[0]; 
    1462                 $time_total = $time_end - $this->time_start; 
    1463                 return $time_total; 
     1489        private function timer_stop() { 
     1490                $time_total = microtime( true ) - $this->time_start; 
     1491                return (int) $time_total; 
    14641492        } 
    14651493 
    14661494        /** 
     
    14741502         * @param string $error_code Optional. A Computer readable string to identify the error. 
    14751503         * @return false|void 
    14761504         */ 
    1477         function bail( $message, $error_code = '500' ) { 
     1505        private function bail( $message, $error_code = '500' ) { 
    14781506                if ( !$this->show_errors ) { 
    14791507                        if ( class_exists( 'WP_Error' ) ) 
    14801508                                $this->error = new WP_Error($error_code, $message); 
     
    14941522         * 
    14951523         * @return WP_Error 
    14961524         */ 
    1497         function check_database_version() { 
     1525        public function check_database_version() { 
    14981526                global $wp_version, $required_mysql_version; 
    14991527                // Make sure the server has the required MySQL version 
    15001528                if ( version_compare($this->db_version(), $required_mysql_version, '<') ) 
     
    15021530        } 
    15031531 
    15041532        /** 
    1505          * Whether the database supports collation. 
    1506          * 
    1507          * Called when WordPress is generating the table scheme. 
    1508          * 
    1509          * @since 2.5.0 
    1510          * 
    1511          * @return bool True if collation is supported, false if version does not 
    1512          */ 
    1513         function supports_collation() { 
    1514                 return $this->has_cap( 'collation' ); 
    1515         } 
    1516  
    1517         /** 
    15181533         * Determine if a database supports a particular feature 
    15191534         * 
    15201535         * @since 2.7.0 
    15211536         * @see   wpdb::db_version() 
    15221537         * 
    1523          * @param string $db_cap the feature 
     1538         * @param string $feature the database capabilitiy feature 
    15241539         * @return bool 
    15251540         */ 
    1526         function has_cap( $db_cap ) { 
     1541        public function has_cap( $feature ) { 
    15271542                $version = $this->db_version(); 
    15281543 
    1529                 switch ( strtolower( $db_cap ) ) { 
     1544                switch ( strtolower( $feature ) ) { 
    15301545                        case 'collation' :    // @since 2.5.0 
    15311546                        case 'group_concat' : // @since 2.7 
    15321547                        case 'subqueries' :   // @since 2.7 
     
    15481563         * 
    15491564         * @return string The name of the calling function 
    15501565         */ 
    1551         function get_caller() { 
     1566        private function get_caller() { 
    15521567                $trace  = array_reverse( debug_backtrace() ); 
    15531568                $caller = array(); 
    15541569 
     
    15681583         * 
    15691584         * @return false|string false on failure, version number on success 
    15701585         */ 
    1571         function db_version() { 
     1586        public function db_version() { 
    15721587                return preg_replace( '/[^0-9.].*/', '', mysql_get_server_info( $this->dbh ) ); 
    15731588        } 
    15741589}