WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
функция не описана

wpdb::db_connect() public WP 3.0.0

Connects to and selects database.

If $allow_bail is false, the lack of database connection will need to be handled manually.

Это метод класса: wpdb{}

Хуков нет.

Возвращает

true/false. True with a successful connection, false on failure.

Использование

$wpdb = new wpdb();
$wpdb->db_connect( $allow_bail );
$allow_bail(true/false)
Allows the function to bail.
По умолчанию: true

Список изменений

С версии 3.0.0 Введена.
С версии 3.9.0 $allow_bail parameter added.

Код wpdb::db_connect() WP 5.5.1

<?php
public function db_connect( $allow_bail = true ) {
	$this->is_mysql = true;

	/*
	 * Deprecated in 3.9+ when using MySQLi. No equivalent
	 * $new_link parameter exists for mysqli_* functions.
	 */
	$new_link     = defined( 'MYSQL_NEW_LINK' ) ? MYSQL_NEW_LINK : true;
	$client_flags = defined( 'MYSQL_CLIENT_FLAGS' ) ? MYSQL_CLIENT_FLAGS : 0;

	if ( $this->use_mysqli ) {
		$this->dbh = mysqli_init();

		$host    = $this->dbhost;
		$port    = null;
		$socket  = null;
		$is_ipv6 = false;

		$host_data = $this->parse_db_host( $this->dbhost );
		if ( $host_data ) {
			list( $host, $port, $socket, $is_ipv6 ) = $host_data;
		}

		/*
		 * If using the `mysqlnd` library, the IPv6 address needs to be enclosed
		 * in square brackets, whereas it doesn't while using the `libmysqlclient` library.
		 * @see https://bugs.php.net/bug.php?id=67563
		 */
		if ( $is_ipv6 && extension_loaded( 'mysqlnd' ) ) {
			$host = "[$host]";
		}

		if ( WP_DEBUG ) {
			mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
		} else {
			// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
			@mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
		}

		if ( $this->dbh->connect_errno ) {
			$this->dbh = null;

			/*
			 * It's possible ext/mysqli is misconfigured. Fall back to ext/mysql if:
			 *  - We haven't previously connected, and
			 *  - WP_USE_EXT_MYSQL isn't set to false, and
			 *  - ext/mysql is loaded.
			 */
			$attempt_fallback = true;

			if ( $this->has_connected ) {
				$attempt_fallback = false;
			} elseif ( defined( 'WP_USE_EXT_MYSQL' ) && ! WP_USE_EXT_MYSQL ) {
				$attempt_fallback = false;
			} elseif ( ! function_exists( 'mysql_connect' ) ) {
				$attempt_fallback = false;
			}

			if ( $attempt_fallback ) {
				$this->use_mysqli = false;
				return $this->db_connect( $allow_bail );
			}
		}
	} else {
		if ( WP_DEBUG ) {
			$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
		} else {
			// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
			$this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
		}
	}

	if ( ! $this->dbh && $allow_bail ) {
		wp_load_translations_early();

		// Load custom DB error template, if present.
		if ( file_exists( WP_CONTENT_DIR . '/db-error.php' ) ) {
			require_once WP_CONTENT_DIR . '/db-error.php';
			die();
		}

		$message = '<h1>' . __( 'Error establishing a database connection' ) . "</h1>\n";

		$message .= '<p>' . sprintf(
			/* translators: 1: wp-config.php, 2: Database host. */
			__( 'This either means that the username and password information in your %1$s file is incorrect or we can&#8217;t contact the database server at %2$s. This could mean your host&#8217;s database server is down.' ),
			'<code>wp-config.php</code>',
			'<code>' . htmlspecialchars( $this->dbhost, ENT_QUOTES ) . '</code>'
		) . "</p>\n";

		$message .= "<ul>\n";
		$message .= '<li>' . __( 'Are you sure you have the correct username and password?' ) . "</li>\n";
		$message .= '<li>' . __( 'Are you sure you have typed the correct hostname?' ) . "</li>\n";
		$message .= '<li>' . __( 'Are you sure the database server is running?' ) . "</li>\n";
		$message .= "</ul>\n";

		$message .= '<p>' . sprintf(
			/* translators: %s: Support forums URL. */
			__( 'If you&#8217;re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="%s">WordPress Support Forums</a>.' ),
			__( 'https://wordpress.org/support/forums/' )
		) . "</p>\n";

		$this->bail( $message, 'db_connect_fail' );

		return false;
	} elseif ( $this->dbh ) {
		if ( ! $this->has_connected ) {
			$this->init_charset();
		}

		$this->has_connected = true;

		$this->set_charset( $this->dbh );

		$this->ready = true;
		$this->set_sql_mode();
		$this->select( $this->dbname, $this->dbh );

		return true;
	}

	return false;
}