X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/wordpress.git/blobdiff_plain/542cf06a610bc430421351ace7a2cc45f393b990..ae01624bdce6b71c47e08e8a0287de58284a6b73:/wp-includes/wp-db.php diff --git a/wp-includes/wp-db.php b/wp-includes/wp-db.php index 61f6d9aa..d9e70865 100644 --- a/wp-includes/wp-db.php +++ b/wp-includes/wp-db.php @@ -48,7 +48,6 @@ define( 'ARRAY_N', 'ARRAY_N' ); * @package WordPress * @subpackage Database * @since 0.71 - * @final */ class wpdb { @@ -65,7 +64,7 @@ class wpdb { * Whether to suppress errors during the DB bootstrapping. * * @access private - * @since 2.5 + * @since 2.5.0 * @var bool */ var $suppress_errors = false; @@ -74,7 +73,7 @@ class wpdb { * The last error during query. * * @see get_last_error() - * @since 2.5 + * @since 2.5.0 * @access private * @var string */ @@ -92,7 +91,7 @@ class wpdb { /** * Count of rows returned by previous query * - * @since 1.2 + * @since 1.2.0 * @access private * @var int */ @@ -456,7 +455,7 @@ class wpdb { /** * A textual description of the last query/get_row/get_var call * - * @since unknown + * @since 3.0.0 * @access public * @var string */ @@ -476,8 +475,6 @@ class wpdb { * @param string $dbhost MySQL database host */ function wpdb( $dbuser, $dbpassword, $dbname, $dbhost ) { - if( defined( 'WP_USE_MULTIPLE_DB' ) && WP_USE_MULTIPLE_DB ) - $this->db_connect(); return $this->__construct( $dbuser, $dbpassword, $dbname, $dbhost ); } @@ -502,7 +499,34 @@ class wpdb { if ( WP_DEBUG ) $this->show_errors(); - if ( is_multisite() ) { + $this->init_charset(); + + $this->dbuser = $dbuser; + $this->dbpassword = $dbpassword; + $this->dbname = $dbname; + $this->dbhost = $dbhost; + + $this->db_connect(); + } + + /** + * PHP5 style destructor and will run when database object is destroyed. + * + * @see wpdb::__construct() + * @since 2.0.8 + * @return bool true + */ + function __destruct() { + return true; + } + + /** + * Set $this->charset and $this->collate + * + * @since 3.1.0 + */ + function init_charset() { + if ( function_exists('is_multisite') && is_multisite() ) { $this->charset = 'utf8'; if ( defined( 'DB_COLLATE' ) && DB_COLLATE ) $this->collate = DB_COLLATE; @@ -514,50 +538,33 @@ class wpdb { if ( defined( 'DB_CHARSET' ) ) $this->charset = DB_CHARSET; - - $this->dbuser = $dbuser; - - $this->dbh = @mysql_connect( $dbhost, $dbuser, $dbpassword, true ); - if ( !$this->dbh ) { - $this->bail( sprintf( /*WP_I18N_DB_CONN_ERROR*/" -
This either means that the username and password information in your wp-config.php
file is incorrect or we can't contact the database server at %s
. This could mean your host's database server is down.
If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the WordPress Support Forums.
-"/*/WP_I18N_DB_CONN_ERROR*/, $dbhost ), 'db_connect_fail' ); - return; - } - - $this->ready = true; - - if ( $this->has_cap( 'collation' ) && !empty( $this->charset ) ) { - if ( function_exists( 'mysql_set_charset' ) ) { - mysql_set_charset( $this->charset, $this->dbh ); - $this->real_escape = true; - } else { - $query = $this->prepare( 'SET NAMES %s', $this->charset ); - if ( ! empty( $this->collate ) ) - $query .= $this->prepare( ' COLLATE %s', $this->collate ); - $this->query( $query ); - } - } - - $this->select( $dbname, $this->dbh ); } /** - * PHP5 style destructor and will run when database object is destroyed. + * Sets the connection's character set. * - * @see wpdb::__construct() - * @since 2.0.8 - * @return bool true + * @since 3.1.0 + * + * @param resource $dbh The resource given by mysql_connect + * @param string $charset The character set (optional) + * @param string $collate The collation (optional) */ - function __destruct() { - return true; + function set_charset($dbh, $charset = null, $collate = null) { + if ( !isset($charset) ) + $charset = $this->charset; + if ( !isset($collate) ) + $collate = $this->collate; + if ( $this->has_cap( 'collation', $dbh ) && !empty( $charset ) ) { + if ( function_exists( 'mysql_set_charset' ) && $this->has_cap( 'set_charset', $dbh ) ) { + mysql_set_charset( $charset, $dbh ); + $this->real_escape = true; + } else { + $query = $this->prepare( 'SET NAMES %s', $charset ); + if ( ! empty( $collate ) ) + $query .= $this->prepare( ' COLLATE %s', $collate ); + mysql_query( $query, $dbh ); + } + } } /** @@ -737,13 +744,12 @@ class wpdb { * @return null Always null. */ function select( $db, $dbh = null) { - if ( is_null($dbh) ) + if ( is_null($dbh) ) $dbh = $this->dbh; if ( !@mysql_select_db( $db, $dbh ) ) { $this->ready = false; - $this->bail( sprintf( /*WP_I18N_DB_SELECT_DB*/' -We were able to connect to the database server (which means your username and password is okay) but not able to select the %1$s
database.
This either means that the username and password information in your wp-config.php
file is incorrect or we can't contact the database server at %s
. This could mean your host's database server is down.
If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the WordPress Support Forums.
-"/*/WP_I18N_DB_CONN_ERROR*/, $details['db_host'] ), 'db_connect_fail' ); +"/*/WP_I18N_DB_CONN_ERROR*/, $this->dbhost ), 'db_connect_fail' ); + + return; } - $this->select( $details[ 'db_name' ], $this->$dbhname ); + + $this->set_charset( $this->dbh ); + + $this->ready = true; + + $this->select( $this->dbname, $this->dbh ); } /** @@ -1084,48 +1090,23 @@ class wpdb { if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) $this->timer_start(); - // use $this->dbh for read ops, and $this->dbhwrite for write ops - // use $this->dbhglobal for gloal table ops - unset( $dbh ); - if( defined( 'WP_USE_MULTIPLE_DB' ) && WP_USE_MULTIPLE_DB ) { - if( $this->blogs != '' && preg_match("/(" . $this->blogs . "|" . $this->users . "|" . $this->usermeta . "|" . $this->site . "|" . $this->sitemeta . "|" . $this->sitecategories . ")/i",$query) ) { - if( false == isset( $this->dbhglobal ) ) { - $this->db_connect( $query ); - } - $dbh =& $this->dbhglobal; - $this->last_db_used = "global"; - } elseif ( preg_match("/^\\s*(alter table|create|insert|delete|update|replace) /i",$query) ) { - if( false == isset( $this->dbhwrite ) ) { - $this->db_connect( $query ); - } - $dbh =& $this->dbhwrite; - $this->last_db_used = "write"; - } else { - $dbh =& $this->dbh; - $this->last_db_used = "read"; - } - } else { - $dbh =& $this->dbh; - $this->last_db_used = "other/read"; - } - - $this->result = @mysql_query( $query, $dbh ); + $this->result = @mysql_query( $query, $this->dbh ); $this->num_queries++; if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) $this->queries[] = array( $query, $this->timer_stop(), $this->get_caller() ); // If there is an error then take note of it.. - if ( $this->last_error = mysql_error( $dbh ) ) { + if ( $this->last_error = mysql_error( $this->dbh ) ) { $this->print_error(); return false; } if ( preg_match( "/^\\s*(insert|delete|update|replace|alter) /i", $query ) ) { - $this->rows_affected = mysql_affected_rows( $dbh ); + $this->rows_affected = mysql_affected_rows( $this->dbh ); // Take note of the insert_id if ( preg_match( "/^\\s*(insert|replace) /i", $query ) ) { - $this->insert_id = mysql_insert_id($dbh); + $this->insert_id = mysql_insert_id($this->dbh); } // Return number of rows affected $return_val = $this->rows_affected; @@ -1531,7 +1512,7 @@ class wpdb { /** * Determine if a database supports a particular feature * - * @since 2.7 + * @since 2.7.0 * @see wpdb::db_version() * * @param string $db_cap the feature @@ -1545,6 +1526,8 @@ class wpdb { case 'group_concat' : // @since 2.7 case 'subqueries' : // @since 2.7 return version_compare( $version, '4.1', '>=' ); + case 'set_charset' : + return version_compare($version, '5.0.7', '>='); }; return false; @@ -1576,6 +1559,8 @@ class wpdb { /** * The database version number. * + * @since 2.7.0 + * * @return false|string false on failure, version number on success */ function db_version() { @@ -1583,12 +1568,4 @@ class wpdb { } } -if ( ! isset( $wpdb ) ) { - /** - * WordPress Database Object, if it isn't set already in wp-content/db.php - * @global object $wpdb Creates a new wpdb object based on wp-config.php Constants for the database - * @since 0.71 - */ - $wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST ); -} ?>